我喜欢使用以下软件配置进行远程调试:
Win 7 Pro 64 位 WAMP 服务器 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
电话听筒变绿了,这究竟意味着什么,但这对我来说是一个积极的信号。
当我现在在本地网络服务器上运行我的 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 的响应。
有没有人知道在哪里搜索错误或者我还能尝试什么让这些东西正常工作?
非常感谢您提前提供的帮助, 迈克尔
附言抱歉,我不能发布超过两个链接,因为我是新来的,所以没有指向 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
preferably 解析为 IPv4 地址(在操作系统级别和 Apache 级别都不会禁用对 IPv6 的任何支持)。这可以通过在您的 hosts
文件中添加下一行来实现:
127.0.0.1 localhost
这个简单的技巧就可以解决问题!现在 localhost
总是最好被解析为 IPv4 地址,而 ::1
仍然是完全可以理解的。
关于PHP远程调试: XDebug can't connect to JetBrains php Storm client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563280/