“XDEBUG 未加载为 ZEND 扩展”警告是什么意思


What does "XDEBUG NOT LOADED AS ZEND EXTENSION" warning means?

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

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

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

确保它是否配置为作为zend_extension正确加载。php.ini内部添加此行

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

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

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

[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其中包括目录,但也包括一个多余的.'

如果要在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文件的双引号

希望这将有助于某人:)

首先在 PHP 5.3 及更高版本中,你只需要使用 zend_extension而不是 zend_extension_tszend_extension_debugextension

php.ini 文件应如下所示

[xdebug]
zend_extension="C:'xampp'php'ext'php_xdebug-3.2.0RC2-8.1-vs16-x86_64.dll"
xdebug.mode=debug
xdebug.client_host=127.0.0.1

注意!! 为避免错误,您需要安装正确的 xdebug 库文件。

例如,假设您使用 Windows 并安装此xamp版本xampp-windows-x64-8.1.10-0-VS16-installer 。下载有效的 .dll xdebug 文件PHP 8.1 VS16 TS (64 bit)

完成以上所有操作,我保证没有加载错误或问题

如果你在

尝试构建 xdebug 时结束了这里,那么这意味着你已经将它构建为"静态"扩展(而不是 zend 扩展)。

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

我不知道你是否可以做一个静态的zend扩展。

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

为我工作:在 php 中.ini

zend_extension = php_xdebug-3.0.4-8.0-vs16-x86_64.dll