2016-07-28 55 views
2

我已經在我的Mac上設置了php5.6和Apache,並且安裝了IntelliJ與php插件(2016.2)。問題是IDE不想連接到本地服務器。IntelliJ PHP調試器沒有連接

我已經添加了以下幾行到我的php.ini:

[xdebug] 
zend_extension=/usr/local/Cellar/php56/5.6.24/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so 
xdebug.remote_enable = 1 
xdebug.remote_autostart = 1 
xdebug.remote_port = "9000" 

,當我運行php -v我得到:

Zend引擎V2.6.0,版權所有(C)1998 2016 Zend技術 與Xdebug的V2.4.0,版權(C)2002年至2016年,由德里克Rethans的

phpinfo()示出

xdebug.remote_enable開開
xdebug.remote_port 9000 9000

不過的IntelliJ顯示:

xdebug.remote_enable 0 

我檢查,說我指着右邊php.ini(檢查路徑和其他更改時,該文件被編輯)。

我試過所有的配置(包括IDE密鑰),但似乎沒有任何工作。

有沒有一種方法可以檢查調試是否真正起作用(即它是IDE不能識別某些內容還是服務器故障),因爲此時我不知道問題可能出在哪裏。

+0

*「問題在於IDE不想連接到本地服務器」*您的意思是**完全**?如果是關於PHP調試..然後IDE **從不**連接到本地服務器(或其他)。它是連接到調試客戶端的xdebug(在我們的例子中是IDE)。請檢查它是如何工作的:https://xdebug.org/docs/remote – LazyOne

+0

*「當我運行php -v時,我得到:」*在一些Mac設置(例如MAMP)以及大多數Linux distribs中PHP將使用一個CLI和Apache的php.ini將使用不同的。因此 - 如果你想調試網頁(通過瀏覽器),那麼你需要檢查'phpinfo()'輸出通過瀏覽器捕獲..你可能會看到不同的php.ini使用。 *「但IntelliJ顯示:xdebug。remote_enable 0「*部分只是證實了這一點(至少在這個方向上給出了一個非常強烈的暗示) – LazyOne

+0

好吧,我已經添加了phpinfo()顯示的內容(它通過瀏覽器),IDE說明了哪個php.ini通過「它不連接」我的意思是,當我啓動調試器時,它不會碰到任何布魯克點,當我啓動/停止本地服務器時,它也不會顯示任何錯誤 –

回答

2

最好的方法是收集xdebug log這樣的不成功的調試會話,看看它有什麼要說的。有時調試不起作用(IDE顯示沒有反應),但xdebug實際上連接到某個地方就好了(例如另一個服務,如下所述)。

您有可能在您的計算機上運行php-fpm(這取決於您安裝PHP的方式 - 您使用過的工具)。默認情況下,Php-fpm使用與xdebug相同的TCP 9000端口。

sudo lsof -nP -iTCP -sTCP:LISTEN 

運行此命令在終端 - 它應該告訴什麼服務都已經在該端口上偵聽(上9000關鍵字過濾後的結果)。

如果它確實php-fpm ..然後從默認9000在這兩個IDE設置改變Xdebug的端口到任何其他(例如9001或任何其他通常未使用的端口)+ php.ini文件將解決這個問題。