繁体   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