无法让Xdebug在Windows 7上运行

时间:2009-12-14 23:03:38

标签: php apache windows-7 xampp xdebug

我安装了最新的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/时,出现以下错误:

alt text

如果单击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

6 个答案:

答案 0 :(得分:4)

你可能有错误版本的Xdebug。我会看一下phpinfo()并将其中的信息与different versions of the Xdebug dll进行比较。

具体来说,你想看看是否启用了“线程安全”,你需要知道你是在运行VC6编译的PHP还是VC9(如果你使用的是Apache,几乎可以保证你想要VC6)。

答案 1 :(得分:3)

您是否尝试过XDEBUG的自定义安装向导,它会分析您的php安装并提供您需要遵循的确切步骤

Windows二进制文件通常适用于上述PHP版本的每个迷你版本,尽管该扩展程序是针对当时最新的PHP版本构建的。 VCx标记告诉构建扩展的编译器,以及是否禁用ZTS的非线程安全。这些限定符需要匹配您正在使用的PHP版本。如果您不知道需要哪一个,请参阅自定义安装说明。

http://xdebug.org/wizard.php

只需将你的phpinfo粘贴到文本框中,你就可以获得你需要的精确xdebug dll

答案 2 :(得分:2)

坦率地说,我也有两个非常糟糕的日子,我现在还没有最终修复它, 所以这是我的Do和陷阱的集合:

; 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的全局env var(在计算机属性中)并重启(或者可能只是注销)到(也)netbeans-xdebug有帮助!再次:重新检查phpInfo()它生效了。

当然将netbeans-menu:options-> php tab-> debugging section调整到此端口和会话ID。

Here是一个脚本,用于检查(通过php方式)您打算与之交谈的端口是否已打开。 (在评论中还有下面的内容,对于那些懒惰的人来说也是如此)

要让您的浏览器连接,请不要开始忘记(在挫折中)始终附加调试启动的get-argument:

  http://localhost/myTest.php?XDEBUG_SESSION_START=netbeans-xdebug

端口边界上,this tool也可以提供帮助。

Quadruplecheck你保持VC6和VC9编译版本的所有东西。

从命令行运行whatever/path/php.exe myTest.php(完成上述设置后)也可能会显示其他错误(确实如此,我正在修补错误的dll)。

我可以推荐http://www.wampserver.com (出于个人原因,它比流行的xampp包更适合我......)

答案 3 :(得分:0)

是的,有一个已知的问题 - 几乎不可能让Xdebug使用最新的Xampp和64位Vista / Win 7。

有一个bug报告,很多用户抱怨它。

解决方案似乎是latest beta version on Xampp。它包括xdebug的2.0.6版(dev),它运行得很好。

我在64位Vista上测试了大约10天,但没有遇到任何问题。

答案 4 :(得分:0)

像其他人所说,你需要将你的xdebug版本与你的php版本相匹配。

您已经匹配了PHP版本号,线程安全性和编译器。

如果您还没有弄明白(这是一个旧线程),您缺少的是INI配置。如果您要加载一个线程安全的模块,您需要使用以下行:

zend_extension="C:\Path\To\The\Extension.dll"

如果模块线程安全,那么你使用你一直试图使用的INI指令。

这仅适用于zend_extension而非常规扩展。

答案 5 :(得分:0)

当xdebug没有安装XAMPP时,只需使用PHP(32位,TS,VC6,在C:\ Program Files(x86)\ PHP)和Windows 7(64位)上的Apache(32位),在 php中.ini 您需要指定程序文件的 x86 文件夹的完整路径,如。

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开始完美运行。希望这也能帮到你。