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 -iphp -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 无法连接的主要内容,如果未能解决你的问题,请参考以下文章

在notepad++中使用php文件连接XAMPP SQL

解决xampp端口冲突

我无法让 xdebug 工作

(AvastSVC.exe 和 XAMPP)/(XAMPP 上的虚拟主机)

XAMPP 问题?保存后代码不变

Windows 10 上的 XAMPP 和 Skype 端口冲突