セッションを失うzendフレームワーク
-
03-07-2019 - |
質問
Zend frameworkアプリケーションにFlashアップローダーを実装しようとしていますが、セッションに問題があります。
FlashはCookieヘッダーを送信しないため、セッションが失われます。 sessionIdをpostパラメーターとして送信しようとしています。ブートストラップファイルにsession_id($ _ POST ['session_id])を追加しましたが、この動作は機能しているようです。
セッションストレージとしてMySQLテーブルを使用しています
エラーをデバッグしようとしましたが、見る限り、session_idが設定され、ストレージはデータベースからcorectデータを返しますが、$ _ SESSIONグローバルで正しく設定されていないようです。
さらに見知らぬ人でも、私のWindowsコンピューターでは動作するようですが、Linuxステージングサーバーでは動作しないようです。
解決
PHPインストールでSuhosinを使用しているかどうか知っていますか?
いくつかの報告を聞いたことがありますこの場合、php.iniで suhosin.session.cryptua
を無効にします。
とにかく、それがあなたの問題ではない場合は、基本を確認してください:
- たとえばを使用して、Flashからの投稿で
session_id()
を渡すようにしてください。 SWFアップロード、これはpost_params
に渡すことで行われますa>構成配列の値。 -
session_start()
の前に
session_id($ _ POST ['session_id])
を必ず呼び出してください
とにかく、Windows環境で動作すると言っているのであれば、おそらくPHPのインストールに関連しています。
他のヒント
これは長年にわたって報告されてきたさまざまなバグに似ていますが、ほとんどの場合、WindowsではなくLinuxで機能します。
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
コントローラーアクションで次を試してください:
session_write_close();
session_id($this->_getParam('PHPSESSID'));
session_start();