我已经为此绞尽脑汁好几个小时了。
在几周没有使用 PHPStorm 后,我回来做了一些工作,由于某种原因,调试不再起作用。以前可以用,但现在不行了,我不知道发生了什么。
我在 Windows 上运行,使用 IIS,PHP 版本 5.3.8。 XDebug 已安装,并且我已按照通常的说明在 PHP.ini 中设置了配置。
当我运行 phpinfo() 时,一切看起来都很正常(即 XDebug 在那里)。
我重新检查了各种设置,下载了比我使用的稍新版本的 XDebug (Xdebug v2.2.1),但似乎没有什么可以让它发挥作用。
有人可以给我一些线索,告诉我接下来可以看什么吗?
更新:
我又花了几个小时来解决这个问题,但似乎并没有取得多大进展。根据 phpinfo(),XDebug 已安装并加载。我打开了日志记录,但除了 XDebug 确实正在连接之外,它并没有告诉我太多信息...
Log opened at 2013-02-17 04:13:07
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///C:/web/dbg/index.php" language="PHP" protocol_version="1.0" appid="6912" idekey="PHPSTORM"><engine version="2.2.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2012 by Derick Rethans]]></copyright></init>
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>
Log closed at 2013-02-17 04:13:07
看来问题出在 PHPStorm 方面,但我看不出问题出在哪里。我尝试创建一个非常简单的项目,但也无法对其进行调试。
当你花几个小时与某件事搏斗,然后在绝望中尝试一些简单的事情并且它有效时,你难道不讨厌吗?
我决定尝试不同的端口,9001 而不是默认的 9000,它成功了!
我现在意识到我最近安装了 Twonky(用于将视频流传输到我的电视),当我检查设置时,它在那里......端口 9000。
今天下午遇到了同样的问题 - 发现了这个问题以及其他几个SO问题,所以我想我应该发布为我解决这个问题的解决方案。
我缺少到文件系统的映射。这很奇怪,因为我见过 PHPStorm 在以前丢失它们时提示我。
希望这对将来的人有帮助:)
更新到 El Capitan 后也遇到同样的问题。我使用的第一个提示是“运行”->“Web 服务器调试验证”。 PHPStorm 的这个工具给了我一个关于
xdebug.remote_host
我正在使用 v-hosts 的提示,它抱怨 localhost
那里的值不正确。所以我用 xdebug.remote_connect_back=On
更新了 xdebug 设置,它成功了!
显然,如果您尝试在较新版本的 xdebug 上进行调试,则必须将此行包含到您的 xdebug-php.ini 设置中
xdebug.mode=debug
我遇到了同样的问题,我通过删除所有手表来解决它,然后重新启动 phpStorm
有同样的问题。对我来说,我使用端口 9010 进行 xdebug。问题原来是我最近为新鼠标安装的 Logitech GHub 软件侦听端口 9010!您可以使用它来查看 Mac 上给定端口上正在侦听的内容:
lsof -nP -iTCP:9010 | grep LISTEN
较新版本的 PHPStorm 具有调试器验证。官方 PHPStorm 博客有一篇关于此功能的文章,可能会帮助您弄清楚。
当我设置一个配置了 php-fpm 的盒子时,一个麻烦是 php-fpm 默认也在端口 9000 上运行,所以我必须将 php.ini 和 PHPStorm 的首选项中配置的端口更改为 9001 之类的端口。
就其价值而言,我当前的 xdebug php.ini 设置:
[xdebug]
zend_extension="/the/path/to/xdebug.so"
xdebug.file_link_format="txmt://open?url=file://%f&line=%l"
xdebug.remote_enable=1
xdebug.remote_autostart=On
xdebug.remote_port=9001
xdebug.profiler_enable_trigger=1
xdebug.max_nesting_level=250
我也有同样的问题!我终于意识到我的所有配置都是正确的,但是在浏览器端,我没有启用Chrome浏览器的调试。每个浏览器都有自己的使调试开始工作的方式。
我遇到了同样的问题,我尝试了在 SO 和其他站点中可以找到的所有解决方案(检查 phpStorm 和 Xdebug 是否位于同一端口,检查我在文件系统上是否有服务器映射,重新安装 Xdebug 等.) 但最终问题在于我们在内部服务器上运行该网站,IT 人员将我计算机的 IP 地址更改为从可以连接到该服务器的允许地址中过滤掉的地址。这就是为什么 phpStorm 开始忽略来自 Xdebug 的断点。
希望这能帮助将来的人并节省他很多时间。
发现如果 xdebug 日志文件不可写,那么它可能无法工作。总是最好设置 xdebug.remote_log 并使其可写。