Zend Framework теряет сеанс
-
03-07-2019 - |
Вопрос
Я пытаюсь реализовать загрузчик Flash в своем приложении платформы Zend, но у меня возникают проблемы с сеансом.
Flash не отправляет заголовки файлов cookie, поэтому сеанс теряется.Я пытаюсь отправить sessionId в качестве параметра публикации, и в своем загрузочном файле я добавил session_id($_POST['session_id]), но, похоже, это работает.
Я использую таблицу MySQL в качестве хранилища сеансов.
Я попытался отладить ошибку, и, насколько я вижу, session_id установлен, и хранилище возвращает правильные данные из базы данных, но, похоже, в глобальном $_SESSION он установлен неправильно.
И что еще более странно, похоже, что он работает на моем компьютере с Windows, но не на промежуточном сервере Linux.
Решение
Знаете ли вы, используете ли вы Suhosin при установке PHP?
Я слышал мало отчетов если Сухосин делает это с сеансами, решение в этом случае — отключить suhosin.session.cryptua
в php.ini.
В любом случае, если это не ваша проблема, просто чтобы быть уверенным в основах:
- Обязательно передайте свой
session_id()
в посте из вашего Flash, например, с Загрузка SWF-файла, это делается путем передачи его вpost_params
значение массива конфигурации. - Обязательно позвони
session_id($_POST['session_id])
доsession_start()
Но в любом случае, если вы утверждаете, что он работает в вашей среде Windows, это, вероятно, связано с вашей установкой PHP.
Другие советы
Это похоже на различные ошибки, о которых сообщалось на протяжении многих лет, хотя в большинстве случаев это работало в Linux, а не в Windows.
http://framework.zend.com/issues/browse/ZF-2459 https://www.zend.com/en/forums/index.php?t=msg&goto=16104&S=de7d9b854db445eb37d0f33470cac6b0
и совсем недавно, в прошлом месяце:
http://blog.rac.me.uk/2009/01/09/php-zend-session-dont-set-it-up-in-the-initalizer/
-- МаркусКью
Попробуйте следующее в действии контроллера:
session_write_close();
session_id($this->_getParam('PHPSESSID'));
session_start();