Создано несколько сессий PHP, но только на веб-сервере

У меня проблемы с сеансами PHP, которые происходят только на моем тестовом сервере (на моем локальном хосте все работает нормально). Я разрабатываю собственную тему Wordpress, основанную на Roots. Мой локальный хост - OS X (PHP 5.4.4), а сервер тестирования - Ubuntu (5.3.10-1ubuntu3.8).

Проблемы включают в себя:

  • Новые сеансы создаются каждый раз, когда я обновляю страницу (которую я вижу по рендеру 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 а также увидеть сеанс, появившийся на вкладке Cookies в Firebug. Однако на моем тестовом сервере, хотя (слишком много) файлов сеансов создаются в /var/lib/php5/sessionЯ не вижу сессию в Firebug.

Запуск phpinfo() не показывает существенной разницы между директивами PHP на моем локальном хосте и директивами на моем тестовом сервере.

Сервер тестирования - это два (Rackspace) сервера с балансировщиком нагрузки, но я не думаю, что это проблема, поскольку настроено сохранение сеанса.

Сервер тестирования настроен как поддомен, например, test.my-domain.com.

У меня включен отчет об ошибках PHP, но я ничего не заметил.

Я деактивировал все остальные плагины Wordpress.

Я уверен, что это скорее проблема с моим скриптом, чем с настройкой Rackspace, но сейчас я немного озадачен. Мне особенно любопытно, почему я вижу файлы сессий, созданные на тестовом сервере в /var/lib/php5/session, но не вижу их на вкладке Cookies Firebug.

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

1 ответ

Решение

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

Другие вопросы по тегам