У меня возникают проблемы с сеансами PHP, которые возникают только на моем сервере тестирования (все отлично работает на моем локальном хосте). Я разрабатываю пользовательскую тему Wordpress, основанную на Roots. Моим localhost является OS X (PHP 5.4.4), а сервером тестирования является Ubuntu (5.3.10-1ubuntu3.8).Создано несколько сеансов PHP, но только на веб-сервере
Проблем включают в себя:
- Новых сеансы, созданных каждый раз, когда я обновить страницу (который я могу видеть, оказывая
session_id()
в сноске и проверках/var/lib/php5/session
) - функции, вызываемой через запрос AJAX неспособного для получения доступа к правильному сеансу, хотя
session_name()
иsession_start()
вызывают до того, как они попробуют
Другие детали:
Я пытаюсь сохранить переменные в именованный сессии, поэтому каждый раз, когда я называю session_start()
я сейчас делаю это так:
session_name('my_session'); //Not sure if this line strictly required
if (!session_id()) {
session_name('my_session');
session_start();
}
выше сначала вызывается в функция init_sessions
, подключенная к Wordpress следующим образом: add_action('init', 'init_sessions');
, а затем также используется в других файлах, которые нуждаются в доступе к переменным сеанса (например, запрошенных через AJAX).
На локальном хосте я вижу файл сеанса, созданный в /Applications/MAMP/tmp/php
, а также просмотр сеанса на вкладке «Куки» в Firebug. Однако на моем тестовом сервере, хотя (слишком много) файлов сеанса создаются в /var/lib/php5/session
, я не вижу, как сессия появляется в Firebug.
Запуск phpinfo() не показывает существенной разницы между директивами PHP на моем локальном хосте и серверами тестирования на моем тестовом сервере.
Сервер тестирования - это действительно два (Rackspace) сервера с балансировщиком нагрузки, но я не думаю, Это проблема, поскольку настройка сеанса настроена.
Сервер тестирования настроен как субдомен, например. test.my-domain.com.
У меня появилось сообщение об ошибке PHP, но не заметили.
Я дезактивировал все другие плагины Wordpress.
Я уверен, что это скорее проблема с моим скриптом, чем настройка Rackspace, но я немного в тупике. Мне особенно любопытно, почему я вижу файлы сеансов, созданные на сервере тестирования в /var/lib/php5/session
, но не вижу их на вкладке Cookies Firebug.
Любые идеи очень приветствуются. Благодаря!
Боковое примечание: разработка в РАЗЛИЧНЫХ условиях ВСЕГДА плохая. Dev + production всегда должна быть точно такой же. – Sliq
@Panique, пока вы тестируете свое приложение на производстве, как система, перед тем, как отправиться жить, все должно быть в порядке. – peaceman
Вы должны использовать session_start в каждом скрипте/странице - не зависеть от сомнительных условий, а просто _do_ it. – CBroe