PhpStorm 2025.2 帮助

配置 Xdebug

下载 Xdebug

  • 下载 Xdebug 扩展 与您的 PHP 版本兼容,并按照 Xdebug 安装指南

    如果您使用的是预配置的 AMP(Apache、MySQL、PHP)软件包,则 Xdebug 扩展可能已安装。请参阅特定于您的软件包的说明。

将 Xdebug 与 PHP 引擎集成

  1. 打开活动 php.ini 编辑器中的文件。

    如果调试引擎与 PhpStorm 安装在同一台机器上,请打开并编辑 php.ini 与 PhpStorm 中配置的 PHP 解释器关联的文件:

    1. 在里面 设置 对话框( Ctrl+Alt+S ) , 点击 PHP

    2. PHP 在打开的页面中,点击 浏览按钮 旁边是 CLI解释器 场地。

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

  2. 禁用 Zend 调试器Zend 优化器 阻止 Xdebug 的工具。为此,请删除或注释掉 php.ini 文件:

    zend_extension= zend_extension=
  3. 启用 Xdebug。为此,请找到或创建 [xdebug] 部分 php.ini 文件并按如下方式更新:

    [xdebug] zend_extension="" xdebug.mode=debug xdebug.client_host=127.0.0.1 xdebug.client_port=""
    [xdebug] zend_extension="" xdebug.remote_enable=1 xdebug.remote_host=127.0.0.1 xdebug.remote_port=""

    启用 通过 Xdebug 代理进行多用户调试 ,找到 xdebug.idekey 设置并为其分配一个您选择的值。此值将用于在 Xdebug 代理服务器上注册您的 IDE。

  4. 保存并关闭 php.ini 文件。

  5. 通过执行以下任一操作来验证 Xdebug 安装:

    • 在命令行中运行以下命令:

      php --version

      输出应该列出 调试工具 在已安装的扩展中:

      已安装 Xdebug 扩展
    • 创建一个 php 包含以下代码的文件:

      phpinfo();

      在浏览器中打开该文件。 phpinfo 输出应包含 Xdebug 部分:

      已启用 Xdebug 3 支持
      已启用 Xdebug 支持

在 PhpStorm 中配置 Xdebug

检查 Xdebug 安装

  1. Ctrl+Alt+S 打开设置,然后选择 PHP

  2. 检查 调试工具 与所选 PHP 解释器相关的安装:

    1. PHP 页面中,选择相关的 PHP 安装 CLI解释器 列出并点击 浏览按钮 字段旁边。列表显示了 PhpStorm 中所有可用的 PHP 安装,请参阅 配置本地 PHP 解释器配置远程 PHP 解释器

    2. CLI 解释器 打开的对话框显示以下内容:

      • 所选 PHP 安装的版本。

      • 与所选 PHP 安装关联的调试引擎的名称和版本(Xdebug 或 Zend Debugger)。如果未配置调试器,PhpStorm 将显示相应的消息:

        ps_interpreters_debugger_not_installed.png

    或者,打开 安装向导 ,粘贴输出 phpinfo() ,然后点击 分析我的 phpinfo() 输出 . 详细了解如何检查 调试工具 安装在 验证调试引擎的配置

定义 Xdebug 行为

  1. 在 IDE 设置中( Ctrl+Alt+S ), 选择 调试 根据 PHP 节点打开 调试 页。

  2. 在里面 调试工具 区域中,指定以下设置:

    • 调试端口 :指定该工具与 PhpStorm 通信的端口。

      这必须与 php.ini 文件:

      xdebug.client_port=""
      xdebug.remote_port=""

      默认情况下,Xdebug 2 监听端口 9000 。 为了 Xdebug 3 ,默认端口已从 90009003 。您可以指定多个端口,用逗号分隔。默认情况下, 调试端口 值设置为 9003,9000 让 PhpStorm 同时监听两个端口。

      要让 PhpStorm 通过指定的端口接受来自 Xdebug 引擎的任何传入连接 调试端口 字段,选择 可以接受外部连接 复选框。

    • 如果当前行上没有断点,则解析断点(Xdebug 2.8+) :选中复选框启用对 Xdebug 的支持 断点解决机制 在此机制下,调试器会评估 PHP 是否可以为当前行生成内部可执行字节码。如果断点指向的行上没有这样的代码,则无法命中相应的断点。Xdebug 将扫描最多 5 行后续代码,并在可执行代码所在的行停止,并将断点定义更新为该行。

    • 当未指定路径映射时,强制在第一行中断 :选中复选框会使调试器在到达时立即停止,并打开未映射到项目上任何文件的文件 服务器 页面。调试器停在这个文件的第一行,并且 检查/更新变量 显示以下错误消息: 在服务器 <服务器上文件的路径> 上找不到该文件的本地副本 以及一个链接 点击设置映射 。点击链接打开 解决路径映射问题 对话框并将问题文件映射到其本地副本。

      当清除此复选框时,调试器在到达并打开未映射的文件时不会停止,而只是处理该文件,并且不会显示任何错误消息。

    • 如果与源不同,则将断点移动到已解析的位置 :选中该复选框可以使断点位置在解析断点后自动调整到 Xdebug 实际停止的行。

      请注意,该功能仅在 如果当前行上没有断点,则解析断点(Xdebug 2.8+) 复选框已启用。

    • 当脚本位于项目之外时,强制在第一行中断 :选中此复选框后,调试器会在运行到第一行时立即停止,并在当前项目外部打开一个文件。清除此复选框后,调试器会在当前项目外部打开一个文件后继续运行。

    • 启用返回函数值调试(Xdebug 3.2+) :选中的复选框添加了一个额外的调试步骤,用于检查函数中的返回值,这些返回值会立即返回,而无需存储在中间变量中。

  3. 在里面 外部连接 区域,指定你希望 PhpStorm 如何处理从主机和通过未注册的端口接收的连接 部署服务器配置

    • 通过未注册的服务器配置忽略外部连接 :选中此复选框可让 PhpStorm 忽略来自未注册为部署服务器配置的主机和端口的连接。选中此复选框后,PhpStorm 不会尝试自动创建部署服务器配置。

    • 在 PHP 脚本的第一行处中断 :选中此复选框后,调试器将在与 PhpStorm 建立连接后立即停止(而不是自动运行直到到达第一个断点)。或者,打开 运行 | 在 PHP 脚本的第一行中断 主菜单中的选项。

    • 最大同时连接数 :使用此旋转框来限制可以同时处理的外部连接的数量。

配置 Xdebug 以在按需模式下使用

PhpStorm 支持 一经请求 模式,您可以禁用全局 PHP 安装的 Xdebug,并仅在调试命令行脚本或需要代码覆盖率报告时按需自动启用它。这可以让您的命令行脚本(包括 Composer 和单元测试)运行得更快。

  1. 禁用命令行脚本的 Xdebug:

    1. 在里面 设置 对话框( Ctrl+Alt+S ),前往 PHP

    2. PHP 可执行文件 列表中,选择相关的 PHP 解释器并单击 浏览按钮 旁边。在 CLI 解释器 在打开的对话框中,单击 在编辑器中打开 旁边的链接 配置文件: 文件。关闭所有对话框,然后切换到 php.ini 文件已打开。

    3. 在里面 php.ini 文件,找到 [xdebug] 部分,并在其中添加以下行进行注释 ; 介词:

      ;[xdebug] ;zend_extension = ""
    4. 打开 CLI 解释器 对话框并点击 重新加载按钮 旁边是 PHP 可执行文件 字段。PhpStorm 会通知您未安装调试器:

      ps_interpreters_debugger_not_installed.png
  2. 为了让 PhpStorm 在必要时激活 Xdebug,请在 调试器扩展 领域,在 额外的 区域。手动输入路径或点击 浏览按钮 并在打开的对话框中选择位置。

配置 Xdebug 以在 Just-In-Time 模式下使用

PhpStorm 支持在 准时制(JIT) 模式,因此它不会一直连接到您的代码,而仅在发生错误或引发异常时才连接到 PhpStorm。根据所使用的 Xdebug 版本,此操作模式可通过以下设置切换:

该模式既可用于调试命令行脚本,也可用于 Web 服务器调试。

根据您是否要调试命令行脚本或使用 Web 服务器,使用以下其中一种场景。

命令行脚本

对于调试命令行脚本,请指定自定义 -dxdebug.remote_mode=jit (对于 Xdebug 2)或 -dxdebug.start_upon_error=yes (对于 Xdebug 3)指令作为 附加配置选项 :

  1. Ctrl+Alt+S 打开设置,然后选择 PHP

  2. PHP 可执行文件 列表中,选择相关的 PHP 解释器并单击 浏览按钮 旁边。

  3. 在里面 CLI 解释器 在打开的对话框中,单击 浏览按钮 旁边是 配置选项 字段中的 额外的 区域。

  4. 在里面 配置选项 在打开的对话框中,单击 添加按钮 添加新条目。

    类型 xdebug.start_upon_error 在里面 配置指令 领域和 yes 在里面 价值 场地。

    类型 xdebug.remote_mode 在里面 配置指令 领域和 jit 在里面 价值 场地。

    当您点击 好的 ,你返回到 CLI 解释器 对话框中 配置选项 实地表演 -dxdebug.remote_mode=jit (对于 Xdebug 2)或 -dxdebug.start_upon_error=yes (适用于 Xdebug 3)。

Web 服务器调试

  1. 确保本地或远程 Web 服务器上的调试引擎已正确配置。有关更多信息,请参阅 验证调试引擎的配置

  2. 打开 php.ini 该文件被报告为已加载并与 Xdebug 关联。

  3. 在里面 php.ini 文件,找到 [xdebug] 部分。

    改变 xdebug.start_upon_error 从默认 defaultyes

    改变 xdebug.remote_mode 从默认 reqjit

参见 使用 PhpStorm 和 Xdebug 进行即时调试和 PHP 异常断点

配置在 Docker 容器中运行的 Xdebug

配置在以下位置运行的 Xdebug Docker 容器中,提供 Xdebug 特定的参数 Dockerfile , 例如:

运行 pecl 安装 xdebug \ && docker-php-ext-enable xdebug && echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

在这个例子中,我们修改 /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 提供 modeclient_host Xdebug 参数。

请注意 xdebug.client_host 值应替换为运行 PhpStorm 的计算机的 IP 地址,该地址可从 Docker 容器访问。如果您使用 Windows 版 Docker 或者 Mac 版 Docker ,你可以设置 xdebug.client_hosthost.docker.internal ,它会自动解析为主机的内部地址,让您轻松地从容器连接到它。

运行 pecl 安装 xdebug \ && docker-php-ext-enable xdebug && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.remote_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

在这个例子中,我们修改 /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 提供 remote_enableremote_host Xdebug 参数。

请注意 xdebug.remote_host 值应替换为运行 PhpStorm 的计算机的 IP 地址,该地址可从 Docker 容器访问。如果您使用 Windows 版 Docker 或者 Mac 版 Docker ,你可以设置 xdebug.remote_hosthost.docker.internal ,它会自动解析为主机的内部地址,让您轻松地从容器连接到它。

配置在 Vagrant 实例上运行的 Xdebug

配置在以下位置运行的 Xdebug 流浪汉 实例, 连接到 Vagrant 机器 并在 php.ini 文件:

[xdebug] zend_extension="" xdebug.mode=debug xdebug.client_host=10.0.2.2 xdebug.client_port=9003

请注意 xdebug.client_host 值是 10.0.2.2 。这是默认 Vagrant 设置中使用的网关,允许从实例连接到运行 PhpStorm 的主机。

[xdebug] zend_extension="" xdebug.remote_enable=1 xdebug.remote_host=10.0.2.2 xdebug.remote_port=9000

请注意 xdebug.remote_host 值是 10.0.2.2 。这是默认 Vagrant 设置中使用的网关,允许从实例连接到运行 PhpStorm 的主机。

2024年10月11日