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

标签 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>

此后脚本运行得很好,但我似乎无法理解这一点。这可能是我的 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/

相关文章:

ajax - fastcgi_finish_request 在打开 session 存在时创建挂起连接

php - artisan 错误记录详细级别

javascript - 上传文件夹时的文件限制

php - 将文本中的单词映射到数据库中的字符串

php - MySQL 数据库导出 : Allowed memory size of 67108864 bytes exhausted

php, mysql 如果$a 在数据库中

未在 Aws Ec2 实例上为 PHP 7.2 执行 PHP 代码

php - 查询对象数组(带 JSONB 的 Postgres,Laravel 5)

php - 按邮政编码距离升序计算和排序用户的最快方法(也是最优化的)

php - 从mysql数据库拉取数据之前确保wamp服务器在线 -Android