为什么xdebug会在我试过的每个XAMPP安装上崩溃apache?

时间:2008-10-15 22:35:43

标签: windows apache crash xampp xdebug

我已经在三台独立的计算机上安装了Windows XAMPP软件包,其中2台运行Windows Vista 32位(1 Ultimate / 1 Home Premium),1台运行Windows Vista 64 Home Premium。

在php.ini中启用xdebug并重新启动apache后,查看默认的XAMPP localhost索引会导致apache每次都以相同的方式崩溃,并将“php_xdebug.dll”报告为故障模块名称。

以下是Windows崩溃报告器的完整报告:

Problem signature:
Problem Event Name: APPCRASH
Application Name:   apache.exe
Application Version:    2.2.9.0
Application Timestamp:  4853f994
Fault Module Name:  php_xdebug.dll
Fault Module Version:   2.0.3.0
Fault Module Timestamp: 47fcd9b9
Exception Code: c0000005
Exception Offset:   00008493
OS Version: 6.0.6001.2.1.0.768.3
Locale ID:  1033
Additional Information 1:   a34a
Additional Information 2:   c9c5f4fd744690d388ab9d5b3eb051a7
Additional Information 3:   cb2e
Additional Information 4:   650bb5690556a17e911375b94d3e16f0

我已经尝试使用谷歌搜索这个问题,但没有找到任何解决方案,只有类似错误的报告。

编辑:我启用了php_xdebug.dll的扩展行,这似乎已经停止了崩溃到目前为止。

24 个答案:

答案 0 :(得分:6)

我正在使用xDebug在我的Win7机器上运行XAMPP for Windows V1.7.1,它运行完美。

检查您是否安装了SP1,然后按照these notes

进行操作
  1. 找到包含implicit_flush的行并将其设置如下:

    implicit_flush = On

  2. 找到名为[Zend]的部分,并在每行的开头加上一个分号(“;”)注释掉所有行。

  3. 找到该行:zend_extension = "c:\xampp\php\ext\php_xdebug.dll"并取消注释。

  4. 找到[XDebug]部分并取消注释所有行(第一行除外是实际注释)。对于Windows,它应该如下所示:

    [XDebug]
    ;; Only Zend OR (!) XDebug
    zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"
    xdebug.remote_enable=true
    xdebug.remote_host=localhost
    xdebug.remote_port=10000
    xdebug.remote_handler=dbgp
    xdebug.profiler_enable=1
    xdebug.profiler_output_dir="C:\xampp\tmp"
    

答案 1 :(得分:2)

我在互联网上寻找这个问题并尝试了许多解决方案,但没有一个能够解决问题。 我尝试了这个配置,只是最后一个测试并且为我工作,在Windows / Preferences / PHP / Debug下的Eclipse更改中选择Xdebug作为PHP调试器。

答案 2 :(得分:1)

通过谷歌搜索为什么XDebug崩溃了我的WAMP Apache。我刚刚使用当前版本的WAMP(2.0)升级到Vista 64笔记本电脑,这就是我放在我的php.ini中以使崩溃停止。

我使用NetBeans作为我的IDE,调试工作正常。

首先,在您的活动php.ini中注释掉。

;extension=php_xdebug-2.0.4-5.2.8.dll

然后将其添加到活动php.ini的底部(相应地调整目录和xdebug文件名。)

[XDebug]
; Only Zend OR (!) XDebug
zend_extension_ts="C:/Program Files (x86)/wamp/bin/php/php5.2.9-2/ext/php_xdebug-2.0.4-5.2.8.dll"
xdebug.remote_enable=on
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.profiler_output_dir="C:/Program Files (x86)/wamp/tmp"

答案 3 :(得分:1)

通过其他论坛,我发现了一个可能的提示 - 虽然xampp上的apache通常使用apache / bin目录下的php.ini,但有些模块却没有。所以我玩弄了那个目录中的php.ini(到目前为止,简单地将它移出了对我有用的危害,就像重命名/删除它一样)。可能至少要尝试一下。

答案 4 :(得分:1)

可能是我的经验有用: 我使用XAMPP 1.7.4,当尝试使用xdebug 2.1.0从eclipse调试php页面时,apache总是崩溃... 我用xdebug 2.0.5替换了xdebug 2.1.0,现在一切顺利

答案 5 :(得分:1)

http://community.activestate.com/forum-topic/apache-crashes#comment-9812处的解决方案 明显错误的apache模块 - 运行php作为CGI。

答案 6 :(得分:1)

我在Windows 7 Ultimate 6.1.7600上使用Xampp 1.7.3(php 5.3.1)。根据作者的帖子编辑取消评论该行:zend_extension = C:\xampp\php\ext\php_xdebug.dll 在xampp \ php \ php.ini中,我设法让apache http服务器停止崩溃!

原来Xampp附带了自己的xdebug版本,我甚至不需要首先下载任何东西。您只需要取消注释前面提到的行,并在php.ini的[xdebug]部分中启用您想要的xdebug的其他功能。

我安装的Xampp附带的xdebug版本是2.0.6-dev。希望这有帮助!

编辑:忘了提到我正在运行Windows 7的x64风格:P

答案 7 :(得分:1)

安装新版XAMPP

答案 8 :(得分:1)

我遇到了同样的问题。最新版本的xdebug(2.0.6)解决了这个问题。它是开发模式,但对我来说它比以前的版本更稳定:)

它是XAMPP 1.7.3beta http://www.apachefriends.org/en/xampp-beta.html

的一部分

启用xdebug只是在xampp / php / php.ini中取消注释一行

HTH

答案 9 :(得分:1)

这可能对某人有帮助。在使用Eclipse和XDebug调试PHP网页时,我遇到了可重复的Apache崩溃,并尝试了各种重新安装和PHP.INI更改,最终发现我的问题与在单独文件中使用重复变量名有关。一个文件包含另一个文件,两个文件都有(假设)$ foo。一旦我在第二个文件中将$ foo重命名为$ newfoo,并重新启动Apache,我就摆脱了崩溃。

此外,有点相关,我从来没有能够得到PHP.INI文件工作,因为这里和其他地方广泛记录。我必须从zend-extension中删除_ts,见下文,获取phpinfo()文本:使用Xdebug v2.0.5,版权所有(c)2002-2008,Derick Rethans。

XAMPP 1.7.2(使用附带的php_xdebug.dll) PHP 5.3.0

这是我的PHP.INI文件片段:

xdebug.remote_enable = 1 xdebug.remote_host = “127.0.0.1” xdebug.remote_port = 9000 xdebug.remote_handler = “dbgp” 的zend_extension = “C:\ XAMPP \ PHP \分机\ php_xdebug.dll”

答案 10 :(得分:1)

欧根适合我。

  • 请在http://xdebug.org/download.php下载非线程安全dll 即 5.2 VC6非线程安全(32位)

  • 将其保存到\xampp\php\ext目录

  • 打开你的php.ini
    C:\xampp\php\php.ini

滚动到底部,找到[XDebug]并替换

zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"

用这个

zend_extension="C:\xampp\php\ext\php_xdebug-2.0.5-5.2-nts.dll"

所以它看起来像这样:

[XDebug]
;; Only Zend OR (!) XDebug
zend_extension="C:\xampp\php\ext\php_xdebug-2.0.5-5.2-nts.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir="C:\xampp\tmp"

答案 11 :(得分:1)

Vista上的XDebug存在线程安全问题,我使用IIS7和PHP作为ISAPI模块时出现同样的问题,如果加载了xdebug.dll,服务器会随机崩溃,然后我发现了一篇描述PHP +的文章XDebug(在Vista上)应该以单线程模式运行。

我按照以下方式开始工作:

一个非线程安全的PHP版本,一个用于PHP版本的非线程安全的xdebug.dll,在php.ini中它将被加载为zend_extension =“C:/ FullPathToXdebugDll”(没有“_ts”!) ,在CGI(或更好的FastCGI)模式下运行php。 (CGI / FastCGI强制它是单线程的。)

这里是文章的链接: http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/

现在我正在寻找使用Xampp或InstantRails(或类似的东西)在我的笔记本上运行它的可能性(Vista Home Premium没有IIS),但我不知道如何强制apache在单线程模式下运行,有人知道该怎么做吗?

答案 12 :(得分:1)

确保您拥有最新版本的xdebug?我有一个旧版xampp的相同问题,下载了最新的.dll xdebug,更改了php.ini中的映射,并且做了一个款待。

我花了好几个小时才得到...... grr

答案 13 :(得分:1)

我找到了解决这个问题的方法。您可以在此处找到它:http://wiki.mpsoftware.dk/index.php?title=Tutorial_on_how_to_configure_Xdebug_to_work_with_phpDesigner_2008

问题是XDebug与Zend优化器不兼容,因此您需要对[Zend]部分下的所有部分进行注释。

答案 14 :(得分:1)

我使用上述组合为Vista工作提供了一个解决方案,所以如果这对任何人有帮助的话......

Eclipse Europa - 版本:3.3.2构建ID:M20080221-1800

XAMPP - win32版本1.6.8安装程序

xdebug - php_xdebug-2.0.2-5.2.5.dll

〜/ xampp / apache / bin / php.ini

的内容
[Zend]
;zend_extension_ts = "C:\xampp\php\zendOptimizer\lib\ZendExtensionManager.dll"
;zend_extension_manager.optimizer_ts = "C:\xampp\php\zendOptimizer\lib\Optimizer"
;zend_optimizer.enable_loader = 0
;zend_optimizer.optimization_level=15
;;zend_optimizer.license_path =
; Local Variables:
; tab-width: 4
; End:

[XDebug]
;; Only Zend OR (!) XDebug
zend_extension_ts="C:\xampp\php\ext\php_xdebug-2.0.2-5.2.5.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir="C:\xampp\tmp"

对我来说绝对至关重要......

;extension=php_xdebug-2.0.2-5.2.5.dll

没错!注释掉上述内容。

希望这有帮助

答案 15 :(得分:1)

Matty的回答帮助我防止了Apache崩溃,但我无法让远程调试会话正常工作。每当我尝试单步执行代码时,我的客户端都会抱怨连接已关闭,所以我还没有调试。

但是,如果它对其他人有用,这里是我对XAMPP 1.6.8中的apache \ bin \ php.ini文件所做的编辑(同样适用于1.7.0)。第671行:

extension=php_xdebug-2.0.4-5.2.8.dll

和第1297行我补充道:

[XDebug]
;; Only Zend OR (!) XDebug
zend_extension_ts="\xampplite\php\ext\php_xdebug-2.0.4-5.2.8.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir="\xampplite\tmp"
xdebug.trace_output_dir="\xampplite\tmp"

答案 16 :(得分:1)

我也有这个问题。将您的XAMPP安装降级到以前的版本,并修复了该错误。我不确定究竟是什么导致它,但这是目前已知的唯一解决方案。您可以获得第二个最新版本here

答案 17 :(得分:1)

有一个Windows兼容性列表available here。似乎Vista不支持xdebug ...

答案 18 :(得分:1)

PHP通常只能有一个引擎级扩展。我目前在我的机器上使用最新的xampp lite软件包和xdebug及其罚款。

使用grep(用于Windows的gnu32软件包)或其他一些文本过滤器,获取PHP文件中包含“extension”一词的每一行的列表,并确保您确切知道哪些软件包正用于您的wamp叠加。

接下来。 xdebug作为引擎扩展更好地工作,但是有几个人已经指出它也可以用作常规扩展。引擎和普通扩展之间的性能损失是分析不那么准确,编辑器 - >服务器调试不可靠,除了显式的xdebug_break()语句之外似乎不起作用。

最后几件事要尝试调用php -i并将其传递给文本文件。如果它在那里崩溃,那么它应该采取更激烈的措施。找到你的Windows机器上的所有php.ini文件,并逐个将它们重命名为php.disabled.ini或disabled_php.ini,然后再次尝试php -i调用。很可能你有一个潜藏在c:\ |等奇怪位置的php.ini文件c:\ windows \ | c:\ windows \ system或其他在路径中优先的地方然后你期望它是xa​​mmp \ apache \ bin

答案 19 :(得分:1)

  1. 在xampp \ apache \ bin文件夹中打开php.ini(不在xampp \ php文件夹中)。
  2. 找到extension = php_xdebug.dll行。
  3. 取消注释。

答案 20 :(得分:0)

我正在使用Vista x86 SP1,XAMPP 1.6.8和php_xdebug-2.0.2-5.2.5.dll插件。 最近我注意到当我通过右键单击=>运行xampp-control.exe时以管理员身份运行,所有崩溃都消失了:) 有时会发生但非常罕见,我可以在Eclipse PDT中使用调试器。 看看我的溶液

答案 21 :(得分:0)

根据此Issue,我建议您在php.ini中停用这两行:

;xdebug.profiler_enable=1
;xdebug.profiler_output_dir="(temp_dir)"

为我工作

答案 22 :(得分:0)

感谢您的评论,我使用此版本的php_xdebug-2.0.2-5.2.5.dll解决了这个问题,在Windows Vista Business 64bit上为我工作...... php.ini配置是一样的,只是为了使用这个xdebug dll版本.......谢谢

爱马仕

答案 23 :(得分:0)

我刚刚使用zip文件安装了xampp 1.7.4。如果你使用的是.exe文件,除了1.7.4有bug之外,它与包中附带的xdebug文件很好地配合。

我还使用Joomla tutorial来设置调试。 现在一切似乎都运转良好。