XDebug在Windows 7 64位PHP 5.4上无法加载

22

我在Apache上运行PHP。我已经下载了我认为适用于PHP 5.4 64位Windows版本的正确xdebug编译dll文件。我已启用线程安全,并且它正在使用VC9。我已经下载了这个dll并将其放置在这里:

C:\php5\extras\php_xdebug-2.2.0RC1-5.4-vc9-x86_64.dll

以下是我的php.ini文件中的内容:

[xdebug]
zend_extension = "C:\php5\extras\php_xdebug-2.2.0RC1-5.4-vc9-x86_64.dll"

我启动Apache时遇到了这个错误:

[Wed Apr 04 17:01:56 2012] [notice] Parent: Received restart signal -- Restarting the server.
Failed loading C:\php5\extras\php_xdebug-2.2.0RC1-5.4-vc9-x86_64.dll
hild process is ending.
[Wed Apr 04 17:01:56 2012] [notice] Apache/2.2.22 (Win32) PHP/5.4.0 configured -- resuming normal operations
[Wed Apr 04 17:01:56 2012] [notice] Server built: Jan 28 2012 11:16:39
[Wed Apr 04 17:01:56 2012] [notice] Parent: Created child process 2120
[Wed Apr 04 17:01:57 2012] [notice] Child 2120: Child process is running
[Wed Apr 04 17:01:57 2012] [notice] Child 2120: Acquired the start mutex.
[Wed Apr 04 17:01:57 2012] [notice] Child 2120: Starting 64 worker threads.
[Wed Apr 04 17:01:57 2012] [notice] Child 5624: Released the start mutex
[Wed Apr 04 17:01:58 2012] [notice] Child 5624: All worker threads have exited.
[Wed Apr 04 17:01:58 2012] [notice] Child 5624: Child process is exiting
Failed loading C:\php5\extras\php_xdebug-2.2.0RC1-5.4-vc9-x86_64.dll
9个回答

62
为了确保您下载了正确的二进制文件,您可以使用http://xdebug.org/wizard.php上的向导。它将告诉您要下载哪个文件以及在哪个php.ini文件中放置zend_extension行(您现在当然使用了正确的文件,因为您收到了“加载失败”的错误)。

1
由于某些原因,当我尝试使用向导时它没有起作用。实际上它仍然无法正常工作。我访问了我的本地主机上的phpinfo.php页面,按下CTRL+A和CTRL+C,然后将结果粘贴到向导中。它输出了一些信息,但不完整。然后它说“找不到任何有用的信息”。 - Jon Hargett
1
关于Xdebug向导的说明:我在Windows 7上运行PHP 5.4.14,他们的向导网站告诉我只需添加一行zend_extension = C:\PHP\ext。但是为了使其正常工作,我必须定义实际的文件路径,就像这个问题的示例中那样,而不仅仅是它所在的目录。此外,您需要添加更多行到php.ini才能使其正常工作。按照此指南操作即可。 - Spencer Williams
1
@Derick 感谢你提供的链接。非常好用的工具。 - W3bGuy
如果当你试图从xdebug网站下载模块时,它告诉你找不到模块,接下来你该怎么做? - klewis
使用向导! - Harry Bosh
向导帮助我找到了正确的dll文件。 - Aamir

19

我终于让它工作了。 按照xdebug网站上的指示,我使用向导并将dll文件下载到“ext”目录中。然后向导告诉我在我的php.ini文件中添加这一行:zend_extension=ext\php_xdebug-2.3.3-5.6-vc11.dll

这给了我上面看到的错误:Failed loading ext\php_xdebug-2.3.3-5.6-vc11.dll

我还尝试用正斜杠替换反斜杠,但是这样做失败了,显示消息:Failed loading ext\ext/php_xdebug-2.3.3-5.6-vc11.dll

看着最后一条消息,我想也许是扩展目录引起了问题,我发现在我的php.ini文件中有这一行:extension_dir = "ext"

所以我改为使用:zend_extension=php_xdebug-2.3.3-5.6-vc11.dll 然后它就奏效了!


1
谢谢,这正是我需要的Windows 10修复方案。 - Patrick Kenny
谢谢!对我有用。Php 7.2,Xdebug 2.6,Windows 10。 - paibamboo
你的回答激励我去做更深入的调查。在我的情况下,问题是错误的dll版本,即使我的系统是Windows 10-64,它要求xdebug是32位的,可能是因为我安装了32位的xampp(或php,我还需要检查一下)。谢谢! - ManuelJE
1
这是我在执行以下命令时得到的结果 PS C:\Users\Username> php -v警告:无法加载Zend扩展程序'php_xdebug-2.9.8-7.4-vc15-x86_64.dll'(尝试:C:/laragon/bin/php/php-8.0.0-Win32-vs16-x64/ext\php_xdebug-2.9.8-7.4-vc15-x86_64.dll(找不到指定的模块),C:/laragon/bin/php/php-8.0.0-Win32-vs16-x64/ext\php_php_xdebug-2.9.8-7.4-vc15-x86_64.dll.dll(找不到指定的模块))位于未知位置的第0行 PHP 8.0.0(cli)(构建日期:2020年11月24日22:02:57)(ZTS Visual C++ 2019 x64) 版权所有(c)The PHP Group Zend Engine v4.0.0-dev,版权所有(c)Zend Technologies - Back2Lobby

19

好的,现在它可以运行了,我想我知道问题出在哪里了。我使用了64位版本的PHP,但是32位版本的Apache和64位版本的xdebug。我重新开始,并使用了Apache 2.4 32位版本,因为似乎没有带有php5模块的64位版本。所以我确保我所有的东西都是32位版本。我正在使用VC9、线程安全的php5.4。

这篇博客帖子对设置很有帮助: http://lifeofageekadmin.com/how-install-apache-2-4-php-5-4-and-mysql-5-5-21-on-windows-7/


请确保您使用正确的版本“线程安全”[ts]或“非线程安全”[nts]。 - aLx13

7
在最新版本的xampp中,您只需要将zend_extension=xdebug添加到php.ini中即可。例如:
zend_extension=xdebug
[XDebug]
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "c:\tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.trace_output_dir = "c:\xampp\php"
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_connect_back=on
xdebug.remote_port=9000
xdebug.remote_mode=req
xdebug.idekey="PHPSTORM"

假设dll文件名为php_xdebug.dll - michiruf

4

好的,我知道这是一个非常老的僵尸线程,但最近我自己也遇到了这个问题,结果证明它有一个简单的解决方案。

PHP.INI需要使用正斜杠代替反斜杠表示目录,然而在Windows下安装XDebug的说明使用反斜杠。因此对于上述原始问题,解决方案是将zend_extension行更改为:

zend_extension = "C:/php5/extras/php_xdebug-2.2.0RC1-5.4-vc9-x86_64.dll"

希望这可以帮助你。


2
这似乎不是真的。这是我的ini条目:zend_extension = "C:\development\languages\php5517tsx86\ext\php_xdebug-2.2.5-5.5-vc11.dll",它可以正常工作。 - Jon Hargett
1
我也有反斜杠并且一切正常,我的问题是我在x64系统上使用了x86 PHP,并错误地使用了x64 Xdebug dll。建议自行检查 phpinfo(); 输出并选择 x86/x64 和 TS/NTS。 - kit
我使用反斜杠可以正常工作,但我的同事却不行。正斜杠对她也不起作用... - Tech

2

请查看C:\php5\ext目录,看看是否已经有了php_xdebug.dll文件。如果没有,请将php_xdebug-2.2.0RC1-5.4-vc9-x86_64.dll重命名为php_xdebug.dll并放置在C:\php5\ext目录下,然后将您的php.ini文件修改为以下内容:

[xdebug]
zend_extension = "C:\php5\ext\php_xdebug.dll"

php_debug.dll不在那里。我按照你的建议做了,但仍然出现错误。 - Jon Hargett
好吧,这个尝试是值得的。我唯一能提出的建议是尝试使用此处提供的Xdebug二进制文件运行PHP 5.3:http://downloads.php.net/pierre/ - Xenon

0

我使用的是Windows 7 64位和php v5.4.4,但我需要下载的x-debug版本是:

PHP 5.4 VC9(32位)(MD5:ffeb0215621d330fa53b249f0930ffae)

因为IIS无法与xdebug 64位配合使用

此外,我的php.ini指令如下:

[Xdebug]
zend_extension="C:\Program Files (x86)\iis express\PHP\v5.4\ext\php_xdebug-2.4.0rc4-5.4-vc9-nts.dll"
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.profiler_enable=1
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "C:\temp\php"
xdebug.profiler_output_dir="C:\temp\php"

0

我遇到了同样的问题。对我来说,我需要zend_extension的绝对路径,用引号括起来(但反斜杠也可以)。


0

对于旧版本(如PHP 5.6),向导无法工作。请使用以下方法代替:

如何为 PHP 5.6 安装 Xdebug

  1. 运行phpinfo()或运行php.exe -i
  2. 在phpinfo中,
    • 架构显示为x86(32位)或x64(64位)结构。
    • Zend扩展版本显示需要下载的内容。例如:API220131226,TS,VC11(注意TS表示线程安全;有时您会看到ZTS:Zend线程安全)
  3. 转到兼容性矩阵,找到与PHP版本匹配的Xdebug版本。
    • 例如,对于PHP 5.6,我们可以使用Xdebug 2.3、2.4或2.5。在这里获取最新版本,即2.5。
  4. 转到Xdebug历史版本并下载适当的版本。
    • 因此,对于PHP 5.6、32位和Zend的API220131226,TS,VC11,您需要下载Xdebug 2.5.5,并点击PHP 5.6 VC11 TS (32 bit),将下载php_xdebug-2.5.5-5.6-vc11.dll文件。(注意Zend扩展版本的Visual C++版本,这里是VC11)。
  5. 将文件复制到C:\php\ext\文件夹中(假设PHP已安装在此处)。
  6. 打开php.ini文件,在[PHP]部分下找到; Windows Extensions注释。在扩展的末尾添加以下行。
    • zend_extension = "C:\PHP\ext\php_xdebug-2.5.5-5.6-vc11.dll"
    • xdebug.remote_enable=1
    • xdebug.remote_host="localhost"
    • xdebug.remote_port=9000
  7. 运行C:\php.exe -v,您应该看到Xdebug已加载。如果看到加载dll失败(第一条消息),则很可能您下载了错误的dll文件。
    • PHP 5.6.30 (cli) (built: Jan 18 2017 19:48:22)
    • 版权所有 (c) 1997-2016 PHP Group
    • Zend Engine v2.6.0,版权所有 (c) 1998-2016 Zend Technologies
    • 使用Xdebug v2.5.5,版权所有 (c) 2002-2017 Derick Rethans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接