无法让 Xdebug 在 Windows 7 上运行
Posted
技术标签:
【中文标题】无法让 Xdebug 在 Windows 7 上运行【英文标题】:Can't get Xdebug to work on Windows 7 【发布时间】:2010-12-26 14:58:32 【问题描述】:我安装了最新的 XAMPP 包,其中包括 php 5.3.0。我正在尝试启用 Xdebug,但它不起作用。
这是我在 XAMPP 附带的 php.ini 中所做的更改:
; uncommented
zend_extension = "X:\xampp\php\ext\php_xdebug.dll"
; added the following lines:
xdebug.remote_enable=true
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
Apache 启动正常,但是当我在浏览器中打开 http://localhost/
时,出现以下错误:
如果我单击Close the program
按钮,错误消息将在一秒钟内重新出现,就好像它处于无限循环中一样。非常感谢任何帮助以使其正常工作。
我正在运行全新安装的 Windows 7 Ultimate 64 位。
编辑: 从 phpinfo() 的结果来看:
Zend Extension Build API220090626,TS,VC6
PHP Extension Build API20090626,TS,VC6
Debug Build no
Thread Safety enabled
【问题讨论】:
【参考方案1】:您可能使用了错误的 Xdebug 版本。我会查看phpinfo() 并将那里的信息与different versions of the Xdebug dll 进行比较。
具体来说,您想查看是否启用了“线程安全”,并且您需要知道您运行的是 VC6 编译的 PHP 还是 VC9(如果您使用的是 Apache,几乎可以保证您想要VC6)。
【讨论】:
线程安全已启用。 PHP 符合 VC6。我抓住了线程安全的 5.3 VC6,没有加载 32 位版本和 64 位版本。但是,Apache 不再崩溃了。 这很有帮助,我有 php 5.4,但尝试安装 5.3 dll,但没有给出错误。【参考方案2】:您是否尝试过 XDEBUG 的自定义安装向导,它会分析您的 php 安装并提供您需要遵循的确切步骤
Windows 二进制文件通常适用于上述 PHP 版本的每个迷你版本,尽管该扩展是针对当时最新的 PHP 版本构建的。 VCx 标记告知扩展是使用哪个编译器构建的,以及是否禁用 ZTS 是非线程安全的。这些限定符需要与您使用的 PHP 版本相匹配。如果您不知道自己需要哪一个,请参考自定义安装说明。
http://xdebug.org/wizard.php
只需将您的 phpinfo 粘贴到文本框中,您将获得您的 php 所需的确切 xdebug dll
【讨论】:
这太棒了。唯一的问题是它直接将其安装到 PHP 中,因此您需要进行更多调整才能从命令行运行它 - 这是一些工具所做的。 向导救了我,我试过的其他方法都没有用。最终成为绝对路径与相对路径。【参考方案3】:坦率地说,我也有 2 天非常糟糕,我现在不知道最终解决了什么问题, 所以这是我收集的注意事项和陷阱:
; this is the thread safe version,
; the absence of _nts_ in the dll name 'shows' this
; do not use _ts, your library won't get registered and won't show in phpInfo()
zend_extension = "D:/wamp/bin/php/php5.3.8/zend_ext/php_xdebug-2.1.2-5.3-vc9-x86_64.dll"
检查你的 php.ini,检查 phpinfo() 是否所有值(到达)
xdebug.remote_enable = on
xdebug.remote_handler=dbgp
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
; if you have multiple virtual hosts ( like 'local.fooclient' )
; maybe using the IP is safer (for any same-machine-debugging)
xdebug.remote_host=127.0.0.1
; maybe a -much- lower port helped, 84 was free. use netstat to figure out.
xdebug.remote_port=84
; idekey! also see note below
xdebug.idekey=netbeans-xdebug
更多陷阱:
我在网上多次看到 xdebug.remote_handle(没有 r)的错字。小心。
关于 idekey 的注释:上面的 idekey 确实在 phpinfo() 中显示为主值,但是 被 MYMACHINENAME$ 之类的“本地值”覆盖。 ==> 设置一个名为 DBGP_IDEKEY 的全局环境变量(在计算机属性中)并重新启动(或者可能只是注销)到(也)netbeans-xdebug 有帮助!再次:重新检查 phpInfo() 才生效。
当然要调整 netbeans-menu:options->php tab->debugging 部分到这个端口和 session id。
Here 是一个脚本,用于检查(通过 php 方式)您打算与之通信的端口是否打开。 (下面还有 cmets,对于那些懒得从图片中打字的人来说)
为了让您的浏览器能够连接,不要开始忘记(在沮丧中)始终附加调试启动 get-argument:
http://localhost/myTest.php?XDEBUG_SESSION_START=netbeans-xdebug
在港口边境,this tool 也可能有所帮助。
四重检查,您将 VC6 和 VC9 编译版本的所有内容分开。
从命令行运行whatever/path/php.exe myTest.php
(一旦完成上述设置)也可能会显示其他错误(确实如此,而我正在修补不正确的 dll)。
我可以推荐http://www.wampserver.com (出于个人原因,它比流行的 xampp 包更适合我......)
【讨论】:
【参考方案4】:是的,有一个已知问题 - 几乎不可能让 Xdebug 与最新的 Xampp 和 64 位 Vista/Win 7 一起工作。
有一个bug 被举报,许多用户抱怨它。
解决方案似乎是latest beta version on Xampp。它包括 xdebug 的 2.0.6 (dev) 版本,它工作得很好。
我在 64 位 Vista 上测试了大约 10 天,还没有遇到任何问题。
【讨论】:
【参考方案5】:当 xdebug 不使用 XAMPP 安装时,仅使用 PHP(32 位、TS、VC6,在 C:\Program Files (x86)\PHP 中)和 Windows 7(64 位)上的 Apache(32 位),在 php .ini 您需要指定x86 Program Files 之类的文件夹的完整路径。
zend_extension="C:\Program Files (x86)\PHP\ext\php_xdebug-2.1.1-5.3-vc6.dll"
和不
zend_extension="C:\Program Files\PHP\ext\php_xdebug-2.1.1-5.3-vc6.dll"
这是我的错误,当更改为 x86 文件夹时,xdebug 开始正常工作。希望这对您也有帮助。
【讨论】:
【参考方案6】:正如其他人所说,您需要将您的 xdebug 版本与您的 php 版本相匹配。
您已经匹配了 PHP 版本号、线程安全和编译器。
如果您还没有弄清楚(这是一个旧线程),您缺少的是 INI 配置。如果您正在加载一个线程安全的模块,您需要使用以下行:
zend_extension="C:\Path\To\The\Extension.dll"
如果模块不是线程安全的,那么你就使用你一直在尝试使用的INI指令。
这仅适用于 zend_extension 而非常规扩展。
【讨论】:
注意:使用 ts 对于 Apache 2.2.21、W7 x64 下的 PHP 5.3 是不正确的,即使 PHP 和 Apoache 是 TS,使用普通键(只需分配正确的 dll 到它,就是其中没有 _nts 的那个)。也许前一段时间它是正确的。 你是对的,怀疑有人会在此时看到我的帖子,但我更新了它以上是关于无法让 Xdebug 在 Windows 7 上运行的主要内容,如果未能解决你的问题,请参考以下文章
Xdebug + XAMPP + Netbeans = 失败。无法让调试器在 Netbeans 中工作
无法在 XAMPP 和 Windows XP 上安装 Xdebug