XAMPP 和 Notepad++ 上的 Xdebug 无法连接
Posted
技术标签:
【中文标题】XAMPP 和 Notepad++ 上的 Xdebug 无法连接【英文标题】:Xdebug on XAMPP and Notepad++ won't connect 【发布时间】:2012-09-16 12:15:54 【问题描述】:我有一个来自其他人的非常慢的脚本,我需要对其进行分析以加快速度,我已经遵循了许多教程,但是它一直指向相同的步骤。
我已经从 xDebug 的站点下载了相应的二进制文件,方法是复制 phpinfo into Xdebug's website find_binary.php search functionality。
我有一个看似正确的设置。
Notepad++ (NPP) 配置为使用指定的 IDE 密钥通过 127.0.0.1:9000 连接到 Xdebug。
以下是 php.ini 中特定于 xdebug 的部分。
[xdebug]
zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
我使用的是 PHP 5.4.4。
我的 phpinfo 输出没有提到 Xdebug。
【问题讨论】:
你可以用netbeans代替notepad++ 如果php -i
或php -v
返回有关配置、模块或库的警告,请检查命令提示符。
mrowa, php -i 返回:PHP 5.4.4 (cli) (built: Jun 13 2012 21:27:06) - 版权所有 (c) 1997-2012 The PHP Group - Zend Engine v2 .4.0,版权所有 (c) 1998-2012 Zend Technologies - php -v 显示 phpinfo() 的有限部分。但是没有发现任何错误。
你能说出php_xdebug.dll的原名吗(你真正需要的是:编译器版本,例如“vc9”)?然后,在 phpinfo() 结果中搜索“Compilator”并查看 dll 是否具有相同的编译器版本。
【参考方案1】:
对于 带有 php5.3 及更高版本的 Windows,您需要在 php.ini 文件中使用 zend_extension
而不是 zend_extension_ts
。
例子
zend_extension="C:\xampp\php\ext\php_xdebug.dll"
如果您使用 xdebug 向导 http://xdebug.org/wizard.php 并收到此消息 Xdebug 仅作为 PHP 扩展加载,而不是作为 Zend 扩展加载 这是因为使用了zend_extension_ts(我认为)。
还有一点需要注意。
如果您不在正在测试的代码中设置断点,您将不会在记事本中看到任何内容。它运行得如此之快,以至于它看起来好像不起作用(如果你仔细观察,notepad plus 会闪烁)。我花了很长时间才意识到这一点。
第三
我建议为您的系统下载最新的 xdebug.dll 来自http://xdebug.org/download.php
xdebug 仅与 php 5.4 兼容,因为 [2012-05-08] - Xdebug 2.2.0 最新版本是Xdebug 2.2.1
我还建议使用来自http://sourceforge.net/projects/npp-plugins/files/DBGP%20Plugin/ 的最新版 DBDG 插件(notepad plus 需要此文件才能与 Xdebug 一起使用)
另一件事
编辑:刚刚注意到您使用 XAMPSERVER,但我会留下它,以防它对其他人有用。如果您使用的是 wampserver 2.2,则预先安装了 xdebug。如果您稍后再次手动安装 xdebug 并设法安装了 2 个版本或类似的东西,这可能会导致问题。
我最后一个用于 xdebug 的 php.ini 文件
请注意我的上一个版本正在运行,尽管速度很慢。在 php.ini 中,我将 ide 设置为 xdebug,但我可以将其命名为任何我想要的会话名称,并且它有效。您可能不需要我在下面发布的所有信息,您很可能需要更改文件路径和文件名。我用的是D盘。
[xdebug]
;for windows with php5.3 and up you need to use zend_extension instead of zend_extension_ts
zend_extension="D:\wamp\bin\php\php5.4.3\ext\php_xdebug-2.2.1-5.4-vc9-x86_64.dll"
xdebug.remote_autostart=on
xdebug.profiler_output_dir = "d:/wamp/tmp/xdebug"
xdebug.profiler_output_name = "cachegrind.out.%p"
xdebug.profiler_enable = 1
xdebug.profiler_append=0
xdebug.extended_info=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.idekey=xdebug
xdebug.remote_log="d:/wamp/tmp/xdebug/xdebug_remot.log"
xdebug.show_exception_trace=On
xdebug.show_local_vars=9
xdebug.show_mem_delta=0
xdebug.trace_format=0
最后
不要忘记在要测试的代码的 url 地址末尾使用?XDEBUG_SESSION_START=sessionname
。
示例
http://localhost/codetotest.php?XDEBUG_SESSION_START=xdebug
在进行任何更改后还要重新启动服务器的服务,否则它们将不会生效。
【讨论】:
moomoochoo,从 zend_extension_ts 转换到 zend_extension 效果很好。非常感谢 - 我很惊讶解决方案如此简单!从那以后我就能够在没有 XDebug 的情况下解决这个问题(最后一个人的编码草率),但是现在 xDebug 正在工作,它将有助于将来的使用。非常感谢! 有时最简单的解决方案是最难找到的 :P 很高兴你把它整理好了:) 他们肯定是。谢谢你的协助。投票并正确答案。 我已经在整个互联网上搜索了 年 来寻找这个解决方案。我希望我能投票一千次pan> 【参考方案2】:对于 Windows 8,最近的 xamp php 5.5 确保你有 VC11 和 xdebug dll: php_xdebug-2.2.3-5.5-vc11.dll,并插入上述 php.ini 修复,将 d: dir 替换为c:您的 xamp 的路径。用 127 替换 localhost 似乎很重要...。
【讨论】:
以上是关于XAMPP 和 Notepad++ 上的 Xdebug 无法连接的主要内容,如果未能解决你的问题,请参考以下文章