代码之家  ›  专栏  ›  技术社区  ›  Wilhelm Murdoch

php只在命令行模式下抛出xdebug错误

php
  •  12
  • Wilhelm Murdoch  · 技术社区  · 14 年前

    自从启用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中的所有路径都是绝对的。不太清楚这是怎么回事。

    1 回复  |  直到 12 年前
        1
  •  22
  •   Pascal MARTIN    14 年前

    你可能用了两种不同的 .ini 文件夹:

    • 一个供apache使用
    • 还有一个用于cli

    或者,您可能对apache使用的php有同样的问题,但是没有看到这个警告,因为它出现在apache的错误日志中——而且它只是一个警告。


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

    zend_extension=/.../xdebug.so
    

    而不是:

    extension=/.../xdebug.so
    

    这正是错误消息指示的内容: Xdebug MUST be loaded as a Zend extension --但它没有告诉你怎么做。


    注:

    • 我用绝对路径 xdebug.so --你已经这样做了,这很好 (无论如何这是必须的)
    • 但我也在用 zend_extension :xdebug是一个深入到php的zend引擎的扩展,这意味着使用 extension 还不够。

    有关更多信息,请参阅 Installation / activation 在xdebug的文档中翻页。