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

lov*_*ing 15 php xdebug

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

Der*_*ick 18

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

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

  • "无论如何,Xdebug需要作为Zend扩展加载" - 你能解释一下原因吗?当我通过PECL安装xdebug时,我被告知要将"extension = xdebug.so"添加到我的php.ini中,而phpinfo()会报告xdebug如何安装和工作的各种好处,但它也提醒我它是"没有作为Zend扩展加载"没有任何解释为什么我会关心. (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"`实际工作. (3认同)

Syn*_*ech 5

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

\n\n

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

\n\n
[PHP]\nextension_dir  = .\\ext\nextension      = php_memcache.dll\n\xe2\x80\xa6\n[zend]\nzend_extension = php_xdebug-2.2.3-5.3-vc9-nts.dll\n
Run Code Online (Sandbox Code Playgroud)\n\n

虽然 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

\n\n

要解决此问题,您需要使用完全限定/绝对路径,例如:

\n\n
zend_extension = C:\\foobar\\PHP\\ext\\php_xdebug-2.2.3-5.3-vc9-nts.dll\n
Run Code Online (Sandbox Code Playgroud)\n\n

或相对路径,例如:

\n\n
zend_extension = ext\\php_xdebug-2.2.3-5.3-vc9-nts.dll\nzend_extension = ..\\phpexts\\php_xdebug-2.2.3-5.3-vc9-nts.dll\nzend_extension = \\dev\\phpexts\\php_xdebug-2.2.3-5.3-vc9-nts.dll\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n