PHP仅在命令行模式下抛出XDebug错误

Wil*_*och 12 php

自从我启用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>
Run Code Online (Sandbox Code Playgroud)

在此之后脚本运行得很好,但这似乎是我无法绕过的东西.它可能是我的php.ini配置中的路径问题吗?我不确定是否会出现这种情况,无论我在何处访问@php环境变量,它都会抛出同样的错误.

此外,我的php.ini中的所有路径都是绝对的.不确定这里发生了什么.

Pas*_*TIN 22

您可能正在使用两个不同的.ini文件:

  • 一个供Apache使用
  • 另一个用于CLI

或许你对Apache使用的PHP有同样的问题,但是没有看到这个警告,因为它在Apache的错误日志中 - 而且它只是一个警告.


解决方案基本上是使用以下方法加载Xdebug扩展:

zend_extension=/.../xdebug.so
Run Code Online (Sandbox Code Playgroud)

代替 :

extension=/.../xdebug.so
Run Code Online (Sandbox Code Playgroud)

这正是错误消息所指示的内容:Xdebug MUST be loaded as a Zend extension - 除了它没有告诉您如何做到这一点.


注意 :

  • 我正在使用绝对路径xdebug.so- 你已经在做了,这很好(无论如何都需要)
  • 但我也在使用zend_extension:Xdebug是一个延伸到PHP的Zend引擎的扩展,这意味着使用extension是不够的.

有关更多信息以及作为参考,请参阅Xdebug文档中的安装/激活页面.