如何使用xdebug调试PHP CLI脚本?

时间:2009-12-22 16:15:59

标签: cakephp xdebug php

我还没弄明白这一点。我发现的每一篇文档都介绍了如何使用xdebug来调试在Apache中运行的脚本。我需要调试一个php CLI脚本。

因此,例如,如何传递XDEBUG_SESSION_START变量以使xdebug启动?

我特意尝试调试CakePHP shell。所以如果有人对此有任何额外的了解,我会非常感激。

感谢。

4 个答案:

答案 0 :(得分:36)

Xdebug's manual中有一些关于此的注释,例如(引用):

export XDEBUG_CONFIG="idekey=session_name"
php myscript.php

如果您使用Eclipse PDT开发和调试PHP脚本,那么Apache或CLI之间没有太大区别:配置lloks完全相同,您不必配置Web服务器,也不必指示URL ;相反,您必须指明PHP可执行文件的路径。

关于XDEBUG_SESSION_START变量:嗯,你以“调试模式”启动整个脚本,所以你没有任何“调试会话”的概念,我会说。


例如,这就是Window > Preference > PHP > PHP executables现在对我来说的样子,右边是我点击第一张Edit按钮时得到的内容:


(来源:pascal-martin.fr

(来源:pascal-martin.fr

debug configurations窗口:


(来源:pascal-martin.fr

启动调试:它正常工作:


(来源:pascal-martin.fr


希望这会有所帮助: - )

否则,您遇到什么具体问题?

答案 1 :(得分:8)

如果您正在使用bash(或类似的shell),这个小脚本可能会派上用场:

alias drush-debug=drd
function drd {
    export XDEBUG_CONFIG="idekey=cli_session"
    export SERVER_NAME="developer.machine"
    export SERVER_PORT="9000"
    drush "$@"
    unset XDEBUG_CONFIG
    unset SERVER_NAME
    unset SERVER_PORT
};

或根据以下评论员的建议

alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "$@"'

这样,每次调试时都不必手动设置和取消设置触发变量。

答案 2 :(得分:2)

只需将以下部分放入php.ini

即可
[XDebug]
xdebug.max_nesting_level = 200
xdebug.remote_enable=1
xdebug.remote_port=9000
;xdebug.profiler_enable=1
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1

并用您的ide键替换PHPSTORM

答案 3 :(得分:1)

对于Windows和Visual Studio代码,请按以下步骤操作:

  1. https://xdebug.org/download下载xdebug。例如php 7.4 Windows 64位https://xdebug.org/files/php_xdebug-2.9.5-7.4-vc15-nts-x86_64.dll

  2. 将xdebug dll复制到您的php扩展目录(ext)。

  3. 添加到php.ini的末尾

    [XDebug]
    zend_extension=php_xdebug-2.9.5-7.4-vc15-nts-x86_64.dll

    xdebug.remote_enable=1
    xdebug.remote_autostart=1
  1. 打开VSCode并安装https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug

  2. 在VSCode中打开项目工作区,转到“运行”选项卡,单击齿轮并添加这些行

    {
      "name": "listen CLI",
      "type": "php",
      "request": "launch",
      "port": 9000
    },
    {
      "name": "run CLI",
      "type": "php",
      "request": "launch",
      "program": "${file}",
      "cwd": "${fileDirname}",
      "port": 9000
    }
  1. 在要调试的脚本中放置一个断点

  2. 选择“运行CLI”,然后单击“开始调试”

调试愉快!