PHP远程调试:XDebug无法连接到JetBrains php Storm客户端 [英] PHP remote debugging: XDebug can't connect to JetBrains php Storm client

查看:370
本文介绍了PHP远程调试:XDebug无法连接到JetBrains php Storm客户端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过以下软件配置进行远程调试:

i's like to get remote debugging to work with the following software configuration:

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

Win 7 Pro 64bit WAMP Server 2.2 (32bit) incl. 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/

1.) WAMP is up and running, my site can be found under localhost/fox/

2.)PHP Storm的一个项目中,我的源文件和apache别名localhost/fox之间存在映射.

2.) PHP Storm has a project where there is a mapping between my sourcefiles and the apache alias localhost/fox

2.)我安装了php扩展名XDebug并将以下几行添加到我的php.ini中

2.) I installed the php extension XDebug and added the following lines to my 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和回叫地址.

This should configure the Remote Debugging XDebug and the call back address.

我已经在这里检查我的安装:xdebug.org/wizard.php

I check already my installation here: xdebug.org/wizard.php

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

3.) I configured phpstorm, first i added the local server

然后在此处检查我的设置

and then checked my settings here

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

(我也尝试使用127.0.0.1/fox作为服务器地址,而改为使用localhost)

( i tried 127.0.0.1/fox as Server address as well, and localhost instead)

我的调试设置: http://www.bilder-hochladen.net/files/jrn0-1-c4ca- jpg.html

现在,我重新启动我的Apache,进入phpstorm,设置一个断点(它是红色的),单击功能

Now i restart my apache, i go into phpstorm, set a break point (it is red), click the function

Run  -> Start listen to PHP Debug Connections

电话听筒正在变成绿色,这到底意味着什么,但这对我来说是一个积极的信号.

The telephone receiver is turing into green, what ever that exactly could mean but it's a positiv signal to me.

当我现在在本地网络服务器上绝对运行我的php脚本时,什么也没发生,程序运行在断点上并且没有停止.

When I now run my php Script on the local webserver absolutley nothing happens, the programm runs over the break point and does not stop.

在Xdebuggers日志(C:/wamp/tmp/xdebug.log)中,我找到了类似以下消息的负载:

In the Xdebuggers log (C:/wamp/tmp/xdebug.log) i find loads of these messages like these:

 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防火墙可以阻止通信,因此我关闭了completley,但这无济于事.

Somewhere in the internet i found the hint, that the windows firewall could block the communication so i turned it off completley but that did not help.

我也尝试通过telnet连接到localhost:9000,并且得到了phpstorm的响应.

I also tried to connect via telnet to localhost:9000 and i got a response from phpstorm.

有人知道在哪里搜索错误,或者我还能尝试使该东西正常工作吗?

Has anybody an idea where to search the error or what else i could try to get this stuff working ?

非常感谢您的提前帮助, 迈克尔

Thank you very much for your help in advance, Michael

p.s.抱歉,我是新来的,所以我不能发布两个以上的链接,因此没有指向xdebug向导的超链接.

p.s. Sorry i am not allowed to post more than two links because I am new here, so therefor no hyperlink to the xdebug wizard.

推荐答案

也许有点晚了,但是...

Maybe a bit late but...

此处您的设置存在矛盾:

Here you have a contradiction on your settings:

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

这两个设置重叠.你怎么了?

Those two settings overlap. What is your case?

a)您只想从一个单一来源调试应用程序(例如,您是从localhost进行开发并部署到).

a) You want to debug your application just from one single origin (for example, you are developing from and deploying to localhost).

然后您差不多完成了:您已经定义了远程主机为localhost.注释掉remote_connect_back行(带有;)

Then you are almost done: you have already defined that the remote host is localhost. Comment out the remote_connect_back line (with ;)

b)您要接受多个开发源(例如,多台机器在同一网络中调试应用程序).

b) You want to accept multiple development sources (for example, several machines debugging the application in the same network).

然后将覆盖remote_host行,因此您可以删除或注释它.

Then the remote_host line is being overriden, so you can remove or comment it.

这实际上是您当前正在运行的配置.那么,这有什么问题呢?签出运行此脚本来检查它:

This is effectively the configuration you are currently running. So, what's wrong with it? Check it out running this script:

<?
echo $_SERVER['REMOTE_ADDR'];

输出将为::1.好吧,向您的Apache服务器发出请求的主机是localhost. Apache正在将该名称解析为IPv6地址::1,这最后没有错.但是Xdebug无法连接到IPv6地址.参见:

The output will be ::1. Well, the host which is making the request to your Apache server is localhost. And Apache is resolving that name as the IPv6 address ::1, which in the end is not wrong. But Xdebug is unable to connect to an IPv6 address. See:

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

因此,我们的目标是使Apache优先将localhost 解析为IPv4地址(而不在操作系统级别或Apache级别禁用对IPv6的任何支持).这可以通过在您的hosts文件中添加下一行来实现:

So our goal will be to make Apache to resolve localhost preferably to an IPv4 address (without disabling any support for IPv6 at OS level nor at Apache level). This may be achieved by adding to your hosts file the next line:

127.0.0.1 localhost

这个简单的技巧就能解决问题!现在,localhost将始终总是可以解析为IPv4地址,而::1仍然可以完全理解.

This simple hack will do the trick! Now localhost will always preferably be resolved as an IPv4 address, while ::1 will still be perfectly understandable.

这篇关于PHP远程调试:XDebug无法连接到JetBrains php Storm客户端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆