Zend Framework проигрывает сессию
Я пытаюсь реализовать Flash Uploader в моем приложении Zend Framework, но у меня проблемы с сеансом.
Flash не отправляет заголовки файлов cookie, и поэтому сеанс теряется. Я пытаюсь отправить sessionId как post-param, и в своем файле начальной загрузки я добавил session_id($_POST['session_id]), но, похоже, это работает.
Я использую таблицу MySQL в качестве хранилища сессий
Я попытался отладить ошибку, и, насколько я вижу, session_id установлен, и хранилище возвращает основные данные из базы данных, но, похоже, они не установлены правильно в глобальном $_SESSION.
И даже странно, что он работает на моем компьютере с Windows, но не на промежуточном сервере Linux.
3 ответа
Знаете ли вы, если вы используете Suhosin с вашей установкой PHP?
Я слышал несколько сообщений о том, что Suhosin делал это на сессиях, решение в этом случае - отключить suhosin.session.cryptua
в php.ini.
В любом случае, если это не ваша проблема, просто чтобы быть уверенным в основах:
- Убедитесь, что вы передаете свой
session_id()
в сообщении из вашей Flash, например, с помощью загрузки SWF, это делается путем передачи его вpost_params
значение массива конфигурации. - Убедитесь, что вы звоните
session_id($_POST['session_id])
доsession_start()
Но в любом случае, это, вероятно, связано с вашей установкой PHP, если вы говорите, что она работает в вашей среде Windows.
Попробуйте следующее в вашем действии контроллера:
session_write_close();
session_id($this->_getParam('PHPSESSID'));
session_start();
Это звучит похоже на различные ошибки, о которых сообщалось на протяжении многих лет, хотя в большинстве случаев это работало на 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/
- MarkusQ