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

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

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

以下是Windows Crash Reporter的完整报告:

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 

我试过谷歌search这个问题,但没有find任何解决scheme,只有类似的错误报告。

编辑:我启用了php_xdebug.dll的延长线,似乎已经停止了迄今为止的崩溃。

我使用xDebug在我的Win7机器上运行Windows版本1.7.1的XAMPP,它工作的很好。

检查您是否安装了SP1,然后按照以下说明操作 :

  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" 

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

通过其他一些论坛,我发现了一个可能的提示 – 虽然xampp上的apache通常使用位于apache / bin目录中的php.ini,但是某些模块不会。 所以我玩弄了那个目录下的php.ini文件(只是把它从危险的方式移动到目前为止,比如重命名/删除它)。 至少可以试试看。

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

问题是XDebug与Zend优化器不兼容,所以你需要评论[Zend]部分下的所有部分。

确保你有最新版本的xdebug? 我有一个老版本的xampp相同的问题,下载最新的.dll的xdebug,在php.ini中更改映射,并工作了一种享受。

花了我几个小时,虽然.. grr

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

PHP通常只能有一个引擎级别的扩展。 我正在使用xdebug在我的机器上使用最新的xampp lite软件包。

使用grep(gnu32 package for windows)或其他一些文本过滤器,可以得到PHP文件中包含单词“extension”的每一行的列表,并确保你知道哪些软件包正在用于你的wamp栈。

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

最后几件事是尝试调用php -i并将其传递给文本文件。 如果它在那里崩溃,那么是时候采取更激烈的措施。 找到你的Windows机器上的所有php.ini文件,并逐一重命名为像php.disabled.ini或disabled_php.ini,并再次尝试php -i调用。 它很可能你有一个php.ini文件潜伏在一些奇怪的位置,如c:\ | c:\ windows \ | C:\ WINDOWS \系统或其他地方在路径中优先,那么你期望它是XAMMP \ APACHE \斌

这里有一个Windows兼容性列表。 似乎xdebug不支持Vista …

我也有这个问题。 将您的XAMPP安装降级到以前的版本,并修复了这个错误。 我不确定到底是什么原因造成的,但这是目前唯一已知的解决方案。 你可以在这里得到第二个最新的版本。

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" 

穿过这个做谷歌搜索为什么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" 

在Vista上有XDebug的线程安全问题,我使用IIS7作为ISAPI模块使用IIS7也是一样的问题,服务器在xdebug.dll被加载时随机崩溃,然后我找到一篇描述PHP + XDebug(on Vista)应该以单线程模式运行。

我按照以下方式工作:

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

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

现在我正在寻找一种可能性来做与Xampp或InstantRails(或类似的东西)相同的事情来运行它在我的笔记本(Vista家庭高级版没有IIS),但我不知道如何强制Apache运行在一个单线程模式,有人知道如何做到这一点?

欧根适合我。

滚动到底部,找到[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" 

这可能对某人有帮助。 在使用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 \ ext \ php_xdebug.dll”

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

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

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

HTH

安装新版本的XAMPP

我在Windows 7旗舰版6.1.7600上使用了Xampp 1.7.3(php 5.3.1)。 在作者的帖子编辑un-commenting行: zend_extension = C:\xampp\php\ext\php_xdebug.dll在xampp \ php \ php.ini,我设法得到apache http服务器停止崩溃!

原来,Xamppp自带的xdebug版本,我甚至从来没有需要下载任何东西。 您只需要取消注释前面提到的行,并在php.ini的[xdebug]部分启用xdebug的其他功能。

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

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

可能是我的expirience将是有益的:我使用XAMPP 1.7.4,apache总是崩溃时,试图从eclipse与xdebug 2.1.0调试PHP页…我用xdebug 2.0.5替换xdebug 2.1.0,现在一切正常

我有一个解决方案的工作Vista的使用上述的组合,所以如果这有助于任何人在这里去…

Eclipse Europa – 版本:3.3.2 Build 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 

那就对了 ! 注释掉上面的行。

希望这可以帮助

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

爱马仕

根据这个问题,我建议你在你的php.ini禁用这两行:

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

为我工作

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

我只是使用zip文件安装xampp 1.7.4。 如果您使用的是.exe文件,那么1.7.4就有一个bug,但它可以很好地与软件包提供的xdebug文件配合使用。

我也使用Joomla教程来设置调试。 现在所有人似乎都工作得很好。