2012-04-06 250 views
11

Xdebug已加载,但未作为zend扩展加载。这是什么意思?如何解决这个问题?“XDEBUG未加载为ZEND EXTENSION”警告的含义是什么?

+0

你的配置是什么?你的** php.ini里面有什么? ('zend_extension_debug = *')。更多细节将不胜感激。 – Liyali 2012-04-06 07:43:52

+0

你怎么知道它不是作为zend扩展加载的?你从哪里读到的?你能提供一个截图吗? – hakre 2012-04-06 09:12:54

回答

15

此错误表示您使用“extension =”加载Xdebug。这可能在你的普通php.ini文件中,或者在一个名为xdebug.ini的文件中,一些发行版希望添加。无论如何,Xdebug需要作为Zend扩展加载,以用于某些功能,如单步调试。由于Xdebug并不是作为一个正常的扩展工作,它可能会崩溃和燃烧。

将Xdebug加载为Zend扩展的语法取决于PHP版本和构建。我建议您使用http://xdebug.org/wizard.php为您提供正确的线路。

+3

“无论如何,Xdebug需要作为Zend扩展加载” - 你能解释为什么吗?当我通过PECL安装xdebug时,我被告知要将“extension = xdebug.so”添加到我的php.ini中,并且phpinfo()会报告关于xdebug如何安装和运行的各种好处,但它也提醒我它是“没有作为Zend扩展加载“没有任何解释为什么我会在乎。 – 2012-08-23 19:27:15

+3

至少在Windows中,xdebug向导犯了一个小错误:它建议添加像'zend_extension = C:\ Program Files(x86)\ PHP \ v5.3 \ ext \ php_xdebug-2.2.1-5.3-vc9-nts。 dll'。它应该是'zend_extension =“C:\ Program Files(x86)\ PHP \ v5.3 \ ext \ php_xdebug-2.2.1-5.3-vc9-nts.dll”'实际工作。 – texnic 2012-09-19 10:05:44

+0

@texnic谢谢!该向导声明将“zend_extension = ext \”添加到php.ini中。它应该说要添加xdebug.dll作为扩展路径的一部分,例如:“zend_extension = ext \ php_xdebug-2.2.2.dll”。我浪费了30分钟试图弄清楚。 – b01 2013-03-24 14:12:44

4

确认它是否配置为正确加载为zend_extension。 Inside php.ini添加此行

zend_extension="/usr/local/php/modules/xdebug.so" 
+0

在我的CentOS 6安装中,它是:'zend_extension =/usr/local/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so'(另外,我的本地php.ini在我的超过默认php.ini的web根目录。似乎我必须在那里添加指令,如果我希望它在该Web路径内工作。) – 2015-07-22 05:50:27

0

其他人已经解释过这个错误是因为Xdebug是作为一个普通的PHP模块加载的,而不是Zend扩展。您可以使用Derick链接到的wizard或手动输入Starx显示的行。

但是,您可能会遇到一个问题。 php.ini中的extensions_dir指令目前仅适用于PHP模块not to Zend extensions。因此,你不能使用这样的常见配置:

[PHP] 
extension_dir = .\ext 
extension  = php_memcache.dll 
… 
[zend] 
zend_extension = php_xdebug-2.2.3-5.3-vc9-nts.dll 

虽然PHP将正确地从ext子目录加载php_memcache.dll,将负荷php_xdebug-2.2.3-5.3-vc9-nts.dll,并会抛出错误Failed loading php_xdebug-2.2.3-5.3-vc9-nts.dll

为了解决这个问题,你要么需要使用一个完全合格的/绝对路径,如:

zend_extension = C:\foobar\PHP\ext\php_xdebug-2.2.3-5.3-vc9-nts.dll 

或诸如此类的相对路径:

zend_extension = ext\php_xdebug-2.2.3-5.3-vc9-nts.dll 
zend_extension = ..\phpexts\php_xdebug-2.2.3-5.3-vc9-nts.dll 
zend_extension = \dev\phpexts\php_xdebug-2.2.3-5.3-vc9-nts.dll 

(向导会返回zend_extension=.\ext\php_xdebug-2.2.3-5.3-vc9-nts.dll其中包含目录但也是多余的.\

2

如果你想激活zend*nts*.dll进入你php.ini文件在Windows服务器上,您必须使用zend_extension_ts指令,而不是zend_extension

实例加载的XDebug:

[XDeug] 
zend_extension_ts="DRIVE:/PATH_TO_XDEBUG/php_xdebug.dll" 
xdebug.show_local_vars=1 
xdebug.default_enable=On 

注:双引号的dll文件

希望这将有助于某人:)

相关问题