PhpStorm 2021.3 Help

调试 PHP CLI 脚本

PHP 应用程序并不总是 Web 应用程序。各种命令行工具、守护进程、消息队列处理应用程序和其他类型的应用程序通常在 PHP CLI 中运行。有几种方法可以启动 PHP CLI 调试会话。您可以从 PhpStorm 中启动它并使其启动脚本并将调试器附加到它。或者,您可以让 PhpStorm 侦听传入的调试器连接并在 IDE 外部启动脚本。我们将看看这两个选项。

在开始调试之前,请确保已正确安装和配置调试引擎。PhpStorm 支持使用两种最流行的工具进行调试:XdebugZend Debugger。这些工具不能同时使用,因为它们相互阻挡。为避免此问题,您需要更新php.ini文件中的相应部分,如配置 Xdebug配置 Zend Debugger中所述。

在编辑器中打开活动的php.ini文件:

  1. 在“设置/首选项”对话框 ( Ctrl+Alt+S) 中,单击PHP

  2. 在打开的PHP页面上,单击CLI Interpreter字段浏览按钮旁边的。

  3. 在打开的CLI 解释器对话框中,配置文件只读字段显示活动php.ini文件的路径。单击在编辑器中打开

从 PhpStorm 启动调试会话

要从 PhpStorm 中开始调试 PHP CLI 脚本,请执行以下步骤。

创建运行/调试配置

PhpStorm 使用运行/调试配置从 IDE 中执行脚本。配置可以为 PHP 解释器定义额外的参数,以及在启动我们的脚本之前启动其他命令。我们需要一个运行/调试配置来从 PhpStorm 中启动调试器。

手动为 PHP 脚本创建运行/调试配置

  1. 使用Run |创建一个新的运行/调试配置。编辑配置菜单。

  2. 添加PHP Script类型的新配置并提供所需的参数,例如要执行的脚本。

  3. 保存创建的运行/调试配置。

为 PHP 脚本生成运行/调试配置

  • 在Project工具窗口中单击鼠标右键,然后选择Debug | <script name>.php从上下文菜单中(确保选择标有 的项目PHP 脚本图标)。或者,在编辑器中打开脚本,按Alt+Shift+F9,然后选择要调试的脚本。

    IDE 将在启用调试器的情况下启动脚本,并打开调试工具窗口

启动调试器

在启动调试器之前,请确保设置了断点,或者在Settings/Preferences对话框的Debug页面上启用了Break at first line in PHP scripts选项。Ctrl+Alt+S

  • 单击调试按钮PhpStorm 工具栏。

  • Alt+Shift+F9

  • 选择运行 | 从主菜单调试。

即时在配置的 PHP 解释器之间切换

  1. Ctrl+Shift+A并开始输入Change PHP interpreter。在建议列表中,选择更改 PHP 解释器操作。

    如有必要,您可以通过按 直接在建议列表中为此操作分配键盘快捷键Alt+Enter,或稍后按配置键盘快捷键中所述分配键盘快捷键。

  2. 在打开的弹出菜单中,选择已配置的本地远程PHP 解释器之一。

所选解释器将被设置为设置/首选项对话框 ( )的PHP页面上的默认项目解释器。这也会影响设置为使用默认项目解释器的运行/调试配置测试框架质量工具的配置。Ctrl+Alt+S

切换 PHP 解释器

从命令行启动调试会话

在运行 CLI 脚本时使用 PhpStorm 启动调试会话之前,请确保满足以下任何要求:

  • Xdebug 的remote_autostart(对于 Xdebug 2)或start_with_request(对于 Xdebug 3)选项被启用。

  • XDEBUG_CONFIG环境变量存在。

侦听传入的调试器连接

在 PhpStorm 中,通过单击开始侦听 PHP 调试连接按钮工具栏或选择Run |启用侦听传入调试连接。开始监听 PHP 调试连接。这将确保 PhpStorm 在启动调试会话时做出反应并自动打开调试工具窗口。在启动脚本之前,请确保设置了断点,或者在Settings/Preferences对话框的Debug页面上启用了Break at first line in PHP scripts选项。Ctrl+Alt+S

使用调试器选项启动脚本

由于我们将从命令行启动脚本,因此我们必须确保它以启用调试器所需的设置启动。

使用 Xdebug 启动脚本

Xdebug 有各种配置选项,我们可以使用这些选项让 PHP 解释器访问 PhpStorm。这些参数必须使用-d命令行参数传递给 PHP 解释器。或者,您可以设置一个环境变量,这样您就不需要-d每次都提供参数。

使用 PHP 命令行开关启动脚本并进行调试

  • 使用以下命令行选项启动 PHP:

    php -dxdebug.mode=debug -dxdebug.client_host=127.0.0.1 -dxdebug.client_port=9003 -dxdebug.start_with_request=yes path/to/script.php
    php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_connect_back=0 path/to/script.php

使用环境变量启动脚本并进行调试

  1. 设置一个配置 Xdebug 的环境变量:

    • 对于 Windows:

      设置 XDEBUG_MODE=debug& 设置 XDEBUG_SESSION=1
      设置 XDEBUG_CONFIG=remote_enable=1 remote_mode=req remote_host=127.0.0.1 remote_port=9000 remote_connect_back=0
    • 适用于 macOS / Linux

      导出 XDEBUG_MODE=调试 XDEBUG_SESSION=1
      导出 XDEBUG_CONFIG="remote_enable=1 remote_mode=req remote_host=127.0.0.1 remote_port=9000 remote_connect_back=0"
  2. 正常启动脚本:

    php 路径/到/script.php

    或者,您可以使用 Xdebug 的remote_autostart(对于 Xdebug 2)或start_with_request(对于 Xdebug 3)设置来始终为每个运行的脚本启动调试会话。

使用 Zend Debugger 启动脚本

Zend Debugger 有各种配置选项,我们可以使用这些选项让 PHP 解释器访问 PhpStorm。这些参数必须使用环境变量传递给 PHP 解释器。

使用调试启动脚本

  1. 设置QUERY_STRING环境变量:

    设置 QUERY_STRING=start_debug=1&debug_host=127.0.0.1&no_remote=1&debug_port=10137&debug_stop=1
    export QUERY_STRING="start_debug=1&debug_host=127.0.0.1&no_remote=1&debug_port=10137&debug_stop=1"
  2. 正常启动脚本:

    php 路径/到/script.php

可选地,为了告诉 PhpStorm 应该使用哪个路径映射配置来从某个机器进行连接,PHP_IDE_CONFIG环境变量的值应该设置为serverName=SomeName,其中SomeNamePHP 上配置的服务器的名称 | 设置/首选项对话框 ( Ctrl+Alt+S)的服务器页面。

设置 PHP_IDE_CONFIG=serverName=SomeName
导出 PHP_IDE_CONFIG="serverName=SomeName"

如果未设置此环境变量,一旦 IDE 检测到传入的 Xdebug 连接,系统将提示您手动指定路径映射。

调试

一旦脚本启动,PhpStorm 将打开调试工具窗口并在脚本中设置的第一个断点处中断。您现在可以继续调试 PHP CLI 脚本,如检查挂起的程序中所述。

如果正在调试的脚本不是在 PhpStorm 中打开的项目的一部分,IDE 仍将在编辑器中打开脚本并在第一条语句处暂停执行。这使得快速调试任何 PHP CLI 脚本成为可能,即使还没有 PhpStorm 项目。

最后修改:2022 年 3 月 18 日