我使用PhpStorm,xdebug和nginx + php-fpm進行遠程調試。當我通過請求GET
參數XDEBUG_SESSION_START=my_ide_key
Nginx repsond 502錯誤代碼(壞網關)。同時,我在IDE中的代碼斷點工作正常。當我沒有通過XDEBUG_SESSION_START
參數時,nginx響應格式良好的HTML和代碼200.但是,如果沒有這個參數,它顯然是沒有調試的。Xdebug設置cookie XDEBUG_SESSION太多次
在nginx錯誤日誌中,我看到有關從上游收到的大標題的通知。我試圖轉儲PHP-FPM和nginx的,只是一個不同的事物之間的通信是一個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=...')
調用。我嘗試升級和降級xdebug版本,但仍具有相同的行爲。地方代碼remove_header('Set-Cookie')
在Smarty_Internal_Template
解決我的問題,但這是醜陋的黑客!
關於這種奇怪的情況的任何想法?
一些額外的信息:它看起來像爲每個註冊的關閉函數調用了「Set-Cookie」頭文件(從我在執行完關閉函數時看到)。在我的情況下,Smarty根本沒有被使用。看起來這只是一個php-shutdown-function-general-general的事情。 – jdunk
另一個可能相關或不相關的奇怪之處:'headers_list()'還表明XDEBUG_SESSION的*兩個*'Set-Cookie'頭文件已經被我的php代碼的第一行設置。 – jdunk