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.

В любом случае, если это не ваша проблема, просто чтобы быть уверенным в основах:

  1. Убедитесь, что вы передаете свой session_id() в сообщении из вашей Flash, например, с помощью загрузки SWF, это делается путем передачи его в post_params значение массива конфигурации.
  2. Убедитесь, что вы звоните 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

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