什么“XDEBUG未加载为ZEND EXTENSION”警告意味着什么?

时间:2012-04-06 07:39:41

标签: php xdebug

已加载Xdebug,但未加载为zend扩展名。这是什么意思?如何解决这个问题?

5 个答案:

答案 0 :(得分:18)

此错误表示您使用“extension =”加载Xdebug。这可能在你正常的php.ini中,或者在一些名为xdebug.ini的文件中,某些发行版喜欢添加。在任何情况下,Xdebug都需要作为Zend扩展加载某些功能,例如单步调试。由于Xdebug不适合作为普通扩展,它可能会崩溃并烧毁。

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

答案 1 :(得分:4)

确保将其配置为正确加载为zend_extension。在php.ini内添加此行

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

答案 2 :(得分:3)

如果要在Windows服务器上激活zend*nts*.dll php.ini文件,则必须使用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文件的双引号

希望这会有所帮助:)

答案 3 :(得分:2)

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

但是,您可能会遇到一个问题。 extensions_dir中的php.ini指令目前仅适用于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会从php_memcache.dll子目录正确加载ext,但它加载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,其中包含目录,但也是多余的.\

答案 4 :(得分:0)

如果在尝试 build xdebug时遇到了错误,则意味着您已将其构建为“静态”扩展(不是zend)。

您可以使用configure --with-xdebug=shared将其构建为共享扩展(dll / so;您应该看到一张表,该表显示xdebug现在已配置为构建为共享扩展而不是静态扩展)。之后将其作为zend扩展程序加载。

我不知道您是否可以进行静态的zend扩展。

另外,请注意,运行完整的xdebug测试套件需要不激活opcache(configure --disable-opcache --with-xdebug=shared