簡體   English   中英

PHP遠程調試:XDebug無法連接到JetBrains的php Storm客戶端

[英]PHP remote debugging: XDebug can't connect to JetBrains php Storm client

我想通過以下軟件配置進行遠程調試:

Win 7 Pro 64位WAMP Server 2.2(32位)包括。 Apache 2.2.22,PHP 5.4.3,XDebug php_xdebug-2.2.1-5.4-vc9.dll JetBrains PHPStorm 4.0.3

1.)WAMP啟動並運行,我的站點可以在localhost / fox /下找到

2.)PHP Storm有一個項目,我的源文件和apache別名localhost / fox之間有一個映射

2.)我安裝了php擴展XDebug並將以下行添加到我的php.ini中

[xdebug]
zend_extension="c:/wamp/bin/php/php5.4.3/zend_ext/php_xdebug-2.2.1-5.4-vc9.dll"
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_connect_back=On
xdebug.remote_autostart=On
xdebug.profiler_enable=On
xdebug.profiler_enable_trigger=off
xdebug.profiler_output_name=cachegrind.out.%t.%p
xdebug.profiler_output_dir="c:/wamp/tmp"
xdebug.remote_log="C:/wamp/tmp/xdebug.log"
xdebug.remote_cookie_expire_time=6000

這應該配置遠程調試XDebug和回調地址。

我在這里檢查了我的安裝:xdebug.org/wizard.php

3.)我配置了phpstorm,首先我添加了本地服務器

然后在這里檢查我的設置

http://www.bilder-hochladen.net/files/jrn0-2-c81e-jpg-nb.html

(我也試過127.0.0.1/fox作為服務器地址,而不是localhost)

我的調試設置: http//www.bilder-hochladen.net/files/jrn0-1-c4ca-jpg.html

現在我重啟我的apache,我進入phpstorm,設置一個斷點(它是紅色的),點擊該功能

Run  -> Start listen to PHP Debug Connections

電話接收器正在變成綠色,這究竟是什么意思,但它對我來說是一個正面的信號。

當我現在在本地webserver absolutley上運行我的php腳本沒有任何反應時,程序運行在斷點上並且不會停止。

在Xdebuggers日志(C:/wamp/tmp/xdebug.log)中,我發現這些消息的負載如下:

 I: Checking remote connect back address.
 I: Remote address found, connecting to ::1:9000.
 E: Could not connect to client. :-(
 Log closed at 2012-07-19 14:21:08

在互聯網的某個地方,我發現了暗示,Windows防火牆可以阻止通信,所以我把它關閉完整但但沒有幫助。

我還嘗試通過telnet連接到localhost:9000,我得到了phpstorm的回復。

有沒有人知道在哪里搜索錯誤或我還能嘗試讓這些東西工作?

邁克爾,非常感謝你的幫助

ps抱歉,我不允許發布兩個以上的鏈接,因為我是新來的,因此沒有指向xdebug向導的超鏈接。

也許有點晚了......

在這里,您的設置存在矛盾:

xdebug.remote_host="localhost"
xdebug.remote_connect_back=On

這兩個設置重疊。 你的情況如何?

a) 您只想從一個源調試應用程序 (例如,您正在開發並部署到localhost )。

然后你幾乎完成了:你已經定義了遠程主機是localhost 注釋掉remote_connect_back行(帶;

b) 您希望接受多個開發源 (例如,在同一網絡中調試應用程序的多台機器)。

然后正在覆蓋remote_host行,因此您可以刪除或注釋它。

這實際上是您當前正在運行的配置。 那么,它有什么問題? 檢查它運行此腳本:

<?
echo $_SERVER['REMOTE_ADDR'];

輸出將是::1 那么,向Apache服務器發出請求的主機是localhost Apache正在將該名稱解析為IPv6地址::1 ,最終沒有錯。 但是Xdebug無法連接到IPv6地址。 看到:

I: Remote address found, connecting to ::1:9000.
E: Could not connect to client. :-(

因此,我們的目標是讓Apache 最好localhost解析為IPv4地址(不會在OS級別或Apache級別禁用任何IPv6支持)。 這可以通過向您的hosts文件添加下一行來實現:

127.0.0.1 localhost

這個簡單的黑客將成功! 現在localhost總是最好被解析為IPv4地址,而::1仍然是完全可以理解的。

您可以嘗試禁用IPV6 http://support.microsoft.com/kb/929852 ,我認為這是您嘗試連接時的問題。

找到遠程地址,連接到:: 1:9000。

系統嘗試連接IPV6,我認為XDebug只能啟用IPV4。

您的代碼中的斷點到底在哪里? 我知道XDebug很有趣。

對於PHP 5.4,您的Xdebug設置應該是

[XDebug]
zend_extension="<path to php_xdebug.dll>"
xdebug.remote_enable=1
xdebug.remote_port="<the port for XDebug to listen to>" (the default port is 9000)
xdebug.profiler_enable=1
xdebug.profiler_output_dir="<AMP home\tmp>"

http://www.jetbrains.com/phpstorm/webhelp/configuring-xdebug.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM