已加载Xdebug,但未加载为zend扩展名。这是什么意思?如何解决这个问题?
答案 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
)