自从启用 XDebug 以来,我在命令行中运行基于 PHP 的实用程序时遇到了一些问题。通过浏览器执行脚本时它运行得很好,但是一旦我尝试在命令行上执行脚本,它就会抛出以下错误:
h:\www\test>@php test.php
PHP Warning: PHP Startup: Unable to load dynamic library 'E:\development\xampplite\php\ext\php_curl.dll' - The specified module could not be found in Unknown on line 0
PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0
h:\www\test>
此后脚本运行得很好,但我似乎无法理解这一点。这可能是我的 php.ini 配置中的路径问题吗?我不确定是否是这种情况,因为无论我在哪里访问 @php
环境变量,它都会引发相同的错误。
此外,我的 php.ini 中的所有路径都是绝对路径。不太确定这里发生了什么。
最佳答案
您可能正在使用两个不同的 .ini
文件:
- 供 Apache 使用的一个
- 还有一个用于 CLI
或者也许您对 Apache 使用的 PHP 也有同样的问题,但没有看到该警告,因为它出现在 Apache 的错误日志中 — 而且它只是一个警告。
基本上,解决方案是使用以下命令加载 Xdebug 扩展:
zend_extension=/.../xdebug.so
而不是:
extension=/.../xdebug.so
这正是错误消息所指示的内容:Xdebug 必须作为 Zend 扩展加载
--只不过它没有告诉您如何执行此操作。 p>
注意:
- 我正在使用
xdebug.so
的绝对路径 - 您已经这样做了,这很好(无论如何都是必需的) - 但我也在使用
zend_extension
:Xdebug 是一个深入到 PHP Zend 引擎的扩展,这意味着仅使用extension
是不够的.
有关详细信息和引用,请参阅 Installation / activation Xdebug 文档中的页面。
关于PHP 仅在命令行模式下抛出 XDebug 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2350965/