MagentoCE1.6.1.0内で次のエラーが発生します
Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - headers already sent by (output started at /home/dev/env/var/www/user/dev/wdcastaging/lib/Zend/Controller/Response/Abstract.php:586) in /home/dev/env/var/www/user/dev/wdcastaging/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php on line 119
アクセスするとき/api/soap/?wsdl
どうやら、session_start()
WSDLファイルの内容全体がすでに出力された後にaが試行されているため、エラーが発生しているようです。
すべてのデータを出力した後、magentoがセッションを開始しようとするのはなぜですか?よろしくお願いします。controller_front_send_response_after
したがって、を呼び出すためにMage_Persistentにフックされているように見えますsynchronizePersistentInfo()
。これにより、が起動しsession_start()
ます。
興味深いことに、これは常に発生しているわけではありませんでした。最初はWSDLが正常に読み込まれ、最初は頭を悩ませて、これを引き起こすためにインストールにどのようなカスタマイズが行われたかを確認しましたが、トレースを実行しました。これはすべてコア内で完全に発生していることを示しているようです。
また、Mage_Persistentで少し(完全に無関係な)奇妙なことを経験しました。これにより、この時点でもう少し手を挙げて、それを実行することができます。
私はSOについて少し検索しましたが、一般的に「ヘッダーはすでに送信されています」というもの全体に関連するいくつかの質問を見つけましたが、この特定のケースではありません。
何かご意見は?
ああ、私が実施している一時的な回避策は、構成データを介してMage_Persistentを無効にすることpersistent/options/enable
です。また、WSDLコントローラーに対してのみこのモジュールを無効にするためにイベントを監視できるかどうかについて少し掘り下げました(問題があるのはそれだけのようです)が、そのモジュールは依存しているようですこの構成フラグのみを使用して、有効なステータスを判別します。
更新:バグが報告されました:http://www.magentocommerce.com/bug-tracking/issue?issue = 13370