2013-11-28 3 views
0

У меня возникают проблемы с сеансами 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.

Любые идеи очень приветствуются. Благодаря!

+0

Боковое примечание: разработка в РАЗЛИЧНЫХ условиях ВСЕГДА плохая. Dev + production всегда должна быть точно такой же. – Sliq

+1

@Panique, пока вы тестируете свое приложение на производстве, как система, перед тем, как отправиться жить, все должно быть в порядке. – peaceman

+1

Вы должны использовать session_start в каждом скрипте/странице - не зависеть от сомнительных условий, а просто _do_ it. – CBroe

ответ

0

Хорошо - думаю, что я определил, что происходит (хотя еще не разрешено). Похоже, проблема в том, что Лак. Когда пользователь вошел в систему, сеанс функционирует отлично. Спасибо всем, кто предложил исправить.