【问题标题】:Debug PHP command line script in PHPStorm在 PHPStorm 中调试 PHP 命令行脚本
【发布时间】:2011-07-15 23:22:48
【问题描述】:

我使用PHPStorm 作为调试 PHP 的主要工具,我非常高兴。到目前为止,我一直在使用 Firefox 运行脚本,PHPStorm 完美地捕捉到了中断。

现在我有一种情况,我通过命令行(不是浏览器)运行 PHP 脚本,想知道是否有办法设置 PHPStorm 以在通过命令行运行 PHP 脚本时捕捉中断?

【问题讨论】:

  • 查看下面的Venkat's answer 以获得简单的解决方案。当前接受的答案已过时。

标签: php command-line debugging phpstorm


【解决方案1】:

在 MacOS 上,我使用不同的 bash_profile。我必须先运行以下命令:

source ~/.bash_profile

这将我的 php 从内置 /usr/bin/php 更改为通过 XAMPP 安装的。 PHPStorm 的 XDebug 在执行上述命令后开始工作。

【讨论】:

    【解决方案2】:

    这些建议都不适合我。

    如果你遇到同样的情况,试试这个命令(检查正确的 php 解释器路径)

    /usr/bin/php -dzend_extension=xdebug.so -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_autostart=1 [PHP_SCRIPT]
    

    【讨论】:

    • 谢谢
    【解决方案3】:

    对我来说(在 MacOS 上)它是这样工作的: export XDEBUG_CONFIG="idekey=12345"

    【讨论】:

      【解决方案4】:
      1. 点击运行。
      2. 点击编辑配置...
      3. 点击绿色的+
      4. 选择 PHP 脚本。
      5. 在名称字段中提供一个名称。
      6. 在文件字段中提供脚本的完整路径。
      7. 点击确定。
      8. 在此下拉列表中选择您刚刚配置的脚本:

      1. 单击运行或调试按钮。您的脚本应该会运行,并且应该会捕获任何设置的断点。

      如果你运行脚本,你可以在这里看到输出:

      如果你调试脚本,你可以在这里看到输出:

      【讨论】:

        【解决方案5】:

        使用 Phpstorm 在 shell/命令行上使用 Xdebug 启用 PHP 调试非常简单:

        export XDEBUG_CONFIG="idekey=PHPSTORM"
        

        在 windows CLI 中,使用 set 而不是 export。

        set XDEBUG_CONFIG="idekey=PHPSTORM"
        

        确保 Phpstorm 正在侦听 PHP Debug 连接。

        从命令行结束调试:

        unset XDEBUG_CONFIG
        

        这个 (PHPSTORM) 是默认的 Phpstorm IDE-Key。

        【讨论】:

        • 在 Windows CLI 中使用 set XDEBUG_CONFIG="idekey=PHPSTORM"
        • 我不明白,PHPStorm 不允许我在命令行工具控制台中运行“set”,'Cannot run program "set" (in directory "blah/blah/blah/") : CreateProcess 错误=2,系统找不到指定的文件'如果我在 CMD 中执行,则运行脚本.. 它不会在断点处中断(我有 PHPStorm 监听连接)。
        【解决方案6】:

        检查环境变量SERVER_NAMESERVER_PORT 是否已设置。 PHPStorm 需要他们做正确的映射。在 bash 中使用 export 或在 phpscript 中手动设置它们。在这两种情况下,PHPStorm 都可以在 $_SERVER['SERVER_NAME']$_SERVER['SERVER_PORT'] 下正确找到它。

        【讨论】:

        • 这为我整理了映射,谢谢!虽然它只在我在 bash 中导出变量时才有效 - 在 PHP 脚本本身中设置它们是行不通的。
        【解决方案7】:

        watch/vote 相关的 PhpStorm 问题。

        目前配置有点复杂。应该可以像described in the Zend KB 那样使用假服务器和PhpStorm 中的Php Remote Debug 配置进行调试。请注意,本教程有一个错误,您需要像这样设置QUERY_STRING(在Windows上):

        SET "QUERY_STRING=start_debug=1&debug_port=10137&debug_host=127.0.0.1&debug_stop=1&no_remote=1&debug_session_id=10000"
        

        (注意重要的引用差异)。

        如屏幕截图所示设置 PhpStorm:

        按主工具栏上的调试按钮。 PhpStorm 将开始侦听调试器连接。

        在命令行中运行你的脚本:

        d:\dev\zend\ZendServer\bin\php.exe d:\work\attaches\sample\helps.php
        

        PhpStorm 会遇到断点:

        这是在安装了 Zend Server 的 Windows 上测试的,但在其他系统和 xdebug 上应该是类似的。

        如果您想直接从 PhpStorm 进行调试,请使用 Php 脚本 运行/调试配置类型。您为此项目配置的 PHP 实例必须在配置文件中启用 Zend DebuggerXdebug

        可以在File | Settings | PHP中指定PHP home和调试器模式。

        刚刚通过 Zend 服务器安装(PHP 主页:d:\dev\zend\ZendServer\bin)和 Zend 调试器进行了验证,对我来说非常适合。

        【讨论】:

        • +1 非常感谢!使用 Php 脚本 运行/调试配置类型是一种可接受的解决方法——我尝试过它并让它工作。但是,它并不理想,因为我必须为要在其上运行 3rd 方外部工具的每个脚本设置配置。如果我可以使用 external tool 机制并让 PHPStorm 捕获中断,那就太好了……但我想我必须等待!
        • 我已经用纯远程配置指南更新了我的回复,之前因为 Zend KB 文章中的引用不正确而无法使用。
        • 谢谢! 'dummy' 方法非常棒,而且非常通用,可以满足我运行外部工具的需求。
        • 仅供参考,这是运行 XDEBUG 的示例环境设置,我正在成功使用它: ----- set "XDEBUG_CONFIG=idekey=PHPSTORM_XDEBUG remote_enable=1 remote_host=127.0.0.1 remote_port =9000 remote_handler=dbgp remote_mode=req" ----- ...再次,引用似乎很敏感
        • 上述问题已于 2011 年 7 月修复。正确答案是Venkat's below
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-06
        • 2012-09-11
        • 1970-01-01
        • 2020-06-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多