雖然我現在意識到讓Eclipse停止在斷點處的訣竅是,當PHP腳本從POST和GET請求中執行ajax/curl時,要確保XDEBUG_START_SESSION
變量在您希望調試器的所有請求中設置要知道,這似乎只適用於Web服務器上的所有路徑都是正常的相對類型。但是,如果您碰巧在Web服務器上存在一些別名路徑(例如通過httpd Alias指令),則XDebug無法將工作空間中的文件路徑與站點URL中的路徑相關聯。在XDebug for Eclipse中,遠程路徑如何映射到本地路徑?
我有以下的目錄設置:
這裏的Web服務器是如何設置:
ServerName test.local
DocumentRoot "C:\Users\me\projects\testproject\start\here"
Alias /post "C:\Users\me\projects\testproject\post"
<Directory "C:\Users\me\projects\testproject">
Require all granted
</Directory>
我認爲這是路徑映射選項卡是幹什麼用的,在發現Debug Configurations -> Server -> Configure... -> Path Mapping
。在我看來,我被告知將Path on server
設置爲網絡服務器上文件系統路徑的目錄或文件,並將Local path
設置爲文件系統或工作區中的路徑。我也嘗試將Path on server
設置爲我想要映射到Local path
的站點URL路徑,但這兩個配置都不會導致在POST POST PHP腳本中出現問題。
我打開了XDebug的日誌記錄,比較正確停止的斷點的消息,因爲它位於調試器啓動的文件中,並且腳本中的斷點通過POST請求執行,這是不幸的不停止。如果/post
路徑與DocumentRoot
上的郵政目錄相對應,但它不會在該文件中停止,但是如果郵政目錄位於其他位置並且站點URL中的「假」/post
路徑與別名不同,則該路徑不會生效。
在我的XDebug log file中,index.php中有第28行的幾個日誌條目,它是正確拆分的文件。 message.php中的第3行也有一個條目,並且URL編碼的路徑看起來正確,但我沒有看到相同類型的條目。
如何將Eclipse配置爲知道服務器上的/post
表示工作區中的/My Project/post
?
我難倒了PHP社區? :-)當然,有人能夠在整個PHP應用程序中設置斷點,喜歡將curl/ajax遍佈整個地方並使用別名web服務器路徑。 – 2015-01-23 17:12:00