PhpStorm、xdebug、nginx + php-fpm でリモート デバッグを使用します。XDEBUG_SESSION_START=my_ide_key
リクエストGET
パラメータを渡すと、Nginx が 502 エラーコード (Bad Gateway) を返します。同時に、IDE のコード ブレークポイントは正常に機能します。パラメータを渡さない場合XDEBUG_SESSION_START
、nginx は適切にフォーマットされた HTML とコード 200 で応答します。
nginx エラー ログに、アップストリームから受信した大きなヘッダーに関する通知が表示されます。php-fpm と nginx の間の通信をダンプしようとしましたが、1 つのSet-Cookie
ヘッダーだけが異なります。
Set-Cookie: XDEBUG_SESSION=666; expires=Mon, 16-Sep-2013 16:07:28 GMT; path=/
このヘッダーが応答に表示されるタイミングを見つけようとします。そして、smarty プラグインSmarty_Internal_Template
デストラクタ (起動スクリプトの最後のコード行の後) を呼び出すheaders_list()
と、Set-Cookie ヘッダーの量が増えていることがわかりました (デストラクタ呼び出しと Set-Cookie ヘッダーの量が等しい)。header('Set-Cookie: XDEBUG_SESSION=...')
私のコードには明示的な呼び出しが1つもないと確信しています。xdebug のバージョンをアップグレードおよびダウングレードしようとしましたが、動作は同じです。コードremove_header('Set-Cookie')
を配置Smarty_Internal_Template
することで問題は解決しますが、それは醜いハックです!
この奇妙な状況について何か考えはありますか?