18

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

4

6 回答 6

21

这个错误意味着你使用了“extension=”来加载 Xdebug。这可能在您的普通 php.ini 中,或者在某些发行版喜欢添加的名为 xdebug.ini 的文件中。在任何情况下,Xdebug 都需要作为 Zend 扩展加载某些功能,例如单步调试。由于 Xdebug 不打算作为普通扩展工作,它也可能崩溃和烧毁。

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

于 2012-04-06T10:48:38.897 回答
4

确保它是否配置为正确加载为zend_extension. 在里面php.ini添加这一行

zend_extension="/usr/local/php/modules/xdebug.so"
于 2012-04-06T09:15:33.583 回答
4

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

但是,您可能会遇到一个问题。目前该extensions_dir指令php.ini仅适用于 PHP 模块,不适用于 Zend 扩展。因此,您不能使用这样的通用配置:

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

虽然 PHP 会php_memcache.dllext子目录正确加载,但它不会加载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其中包括目录但也是多余的.\

于 2013-11-21T02:25:45.847 回答
3

如果要在 Windows 服务器上激活文件,zend*nts*.dllphp.ini必须使用zend_extension_ts指令而不是zend_extension

Example 来加载 xdebug :

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

注意:您的 dll 文件的双引号

希望这会帮助某人:)

于 2014-12-20T08:58:11.087 回答
0

如果您在尝试构建xdebug 时来到这里,那么这意味着您已将其构建为“静态”扩展(不是 zend 扩展)。

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

我不知道你是否可以制作静态 zend 扩展。

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

于 2019-05-14T08:45:19.067 回答
0

为我工作:在 php.ini

zend_extension = php_xdebug-3.0.4-8.0-vs16-x86_64.dll
于 2021-08-27T13:22:59.357 回答