配置 Xdebug
下载 Xdebug
下载与您的 PHP 版本兼容的 Xdebug 扩展 ,并按照 Xdebug 安装指南中的说明进行安装。
如果您使用的是预配置的 AMP(Apache、MySQL、PHP)包,Xdebug 扩展可能已经安装。 请参阅与您的包相关的说明。
将 Xdebug 集成到 PHP 引擎中
在编辑器中打开活动的 php.ini 文件。
如果调试引擎与 PhpStorm 安装在同一台机器上,请打开并编辑与 PhpStorm 中配置的 PHP 解释器关联的 php.ini 文件:
在 设置 对话框(Ctrl+Alt+S )中,单击 PHP。
在打开的 PHP 页面上,单击
,位于 CLI 解释器 字段旁边。
在打开的 CLI 解释器 对话框中, 配置文件 只读字段显示活动 php.ini 文件的路径。 点击 在编辑器中打开。
禁用阻止 Xdebug 的 Zend Debugger 和 Zend Optimizer 工具。 为此,请删除或注释掉 php.ini 文件中的以下行:
zend_extension=<path_to_zend_debugger> zend_extension=<path_to_zend_optimizer>启用 Xdebug。 为此,请在 php.ini 文件中找到或创建
[xdebug]部分,并按以下方式更新:[xdebug] zend_extension="<path to xdebug extension>" xdebug.mode=debug xdebug.client_host=127.0.0.1 xdebug.client_port="<the port (9003 by default) to which Xdebug connects>"[xdebug] zend_extension="<path to xdebug extension>" xdebug.remote_enable=1 xdebug.remote_host=127.0.0.1 xdebug.remote_port="<the port (9000 by default) to which Xdebug connects>"要通过 Xdebug 代理启用 多用户调试 ,请找到
xdebug.idekey设置并为其分配一个您选择的值。 此值将用于在 Xdebug 代理服务器上注册您的 IDE。保存并关闭 php.ini 文件。
通过执行以下任一操作验证 Xdebug 安装:
在命令行中运行以下命令:
php --version输出应列出已安装扩展中的 Xdebug:

创建一个包含以下代码的 php 文件:
<?php phpinfo();在浏览器中打开该文件。
phpinfo输出应包含 Xdebug 部分:

在 PhpStorm 中配置 Xdebug
检查 Xdebug 安装
按 Ctrl+Alt+S 打开设置,然后选择 。
检查与所选 PHP 解释器关联的 Xdebug 安装:
在 PHP 页面上,从 CLI 解释器 列表中选择相关的 PHP 安装,并单击字段旁边的
。 列表显示了 PhpStorm 中可用的所有 PHP 安装,请参阅 配置本地 PHP 解释器 和 配置远程 PHP 解释器。
打开的 CLI 解释器 对话框显示以下内容:
所选 PHP 安装的版本。
与所选 PHP 安装关联的调试引擎(Xdebug 或 Zend Debugger)的名称和版本。 如果未配置调试器,PhpStorm 会显示相应的消息:

或者,打开 安装向导 ,粘贴
phpinfo()的输出,并单击 分析我的 phpinfo() 输出。 了解有关在 验证调试引擎的配置 中检查 Xdebug安装的更多信息。
定义 Xdebug 行为
在 IDE 设置(Ctrl+Alt+S )中,选择 位于 PHP 节点下以打开 Debug 页面。
在 Xdebug 区域中,指定以下设置:
调试端口 :指定工具与 PhpStorm 通信的端口。
此端口号必须与 php.ini 文件中指定的端口号相同:
xdebug.client_port="<the port (9003 by default) to which Xdebug connects>"xdebug.remote_port="<the port (9000 by default) to which Xdebug connects>"默认情况下,Xdebug 2 监听端口 9000 。 对于 Xdebug 3 ,默认端口已从 9000 更改为 9003 。 您可以通过逗号分隔指定多个端口。 默认情况下, 调试端口 值设置为 9003,9000 ,以使 PhpStorm 同时监听两个端口。
要使 PhpStorm 接受来自 Xdebug 引擎的任何通过 调试端口 字段中指定端口的传入连接,请选中 可以接受外部连接 复选框。
如果断点在当前行不可用,则解析断点(Xdebug 2.8+) :选中的复选框启用对 Xdebug 断点解析机制的支持。 在此机制下,调试器会评估 PHP 是否可以为当前行生成内部可执行字节码。 如果断点所指的行上没有这样的代码,则相应的断点无法命中。 Xdebug 将扫描最多 5 行后续代码,停在有可执行代码的行,并将断点定义更新为该行。
未指定路径映射时,在第一行强制中断 :选中的复选框使调试器在到达并打开未映射到项目中任何文件的文件时立即停止,在 服务器 页面上。 调试器在此文件的第一行停止,并且 检查/更新变量 显示以下错误消息: 无法在服务器上找到文件的本地副本 <服务器上的文件路径> 和一个链接 单击以设置映射。 单击链接以打开 解决路径映射问题 对话框并将问题文件映射到其本地副本。
清除此复选框时,调试器在到达并打开未映射的文件时不会停止,文件仅被处理,不会显示错误消息。
如果断点位置与源代码不同,则移动断点到解析位置 :选中的复选框启用断点位置的自动调整,以匹配 Xdebug 实际停止的行。
请注意,此功能仅在启用 如果断点在当前行不可用,则解析断点(Xdebug 2.8+) 复选框时有效。
当脚本在项目外部时,在第一行强制中断 :选中的复选框使调试器在到达并打开当前项目外的文件时立即在第一行停止。 清除此复选框时,调试器在打开当前项目外的文件时继续运行。
启用返回函数值调试(Xdebug 3.2+) :选中的复选框为检查函数返回值添加了额外的调试步骤,这些返回值会立即返回而不存储在中间变量中。
在 外部连接 区域中,指定您希望 PhpStorm 如何处理从未注册为 部署服务器配置的主机和端口接收到的连接。
通过未注册的服务器配置忽略外部连接 :选中此复选框以使 PhpStorm 忽略从未注册为部署服务器配置的主机和端口接收的连接。 选中此复选框时,PhpStorm 不会尝试自动创建部署服务器配置。
在PHP 脚本中的第一行中断 :选中此复选框以使调试器在与 PhpStorm 建立连接后立即停止(而不是自动运行直到到达第一个断点)。 或者从主菜单启用 选项。
最大同时连接数 :使用此微调框限制可以同时处理的外部连接数。
配置 Xdebug 以使用按需模式
PhpStorm 支持 按需模式,您可以为全局 PHP 安装禁用 Xdebug,并仅在调试命令行脚本或需要代码覆盖报告时按需自动启用它。 这使得您的命令行脚本(包括 Composer 和单元测试)运行速度更快。
禁用命令行脚本的 Xdebug:
在 设置 对话框 (Ctrl+Alt+S) 中,前往 PHP。
从 PHP 可执行文件 列表中选择相关的 PHP 解释器,然后单击其旁边的
。 在打开的 CLI 解释器 对话框中,单击 在编辑器中打开 链接,位于 配置文件:<path to php.ini> 文件旁边。 关闭所有对话框并切换到打开 php.ini 文件的选项卡。
在 php.ini 文件中,找到
[xdebug]部分,并通过在前面添加;来注释以下行:;[xdebug] ;zend_extension = "<path to xdebug extension>"打开 CLI 解释器 对话框,并单击
字段旁边的 PHP 可执行文件。 PhpStorm 通知您未安装调试器:

要使 PhpStorm 在需要时激活 Xdebug,请在 调试器扩展 字段中,在 其他 区域内指定其路径。 手动输入路径或单击
并在打开的对话框中选择位置。
配置 Xdebug 以使用即时模式
PhpStorm 支持在 即时 (JIT)模式下使用 Xdebug,因此它不会一直附加到您的代码,而仅在发生错误或抛出异常时连接到 PhpStorm。 根据所使用的 Xdebug 版本,此操作模式通过以下设置切换:
Xdebug 2 使用 xdebug .remote_mode设置,必须将其设置为
jit。Xdebug 3 使用 xdebug.start_upon_error设置,必须将其设置为
yes。
该模式可用于调试命令行脚本和 Web 服务器调试。
根据您是要调试命令行脚本还是使用 Web 服务器,请使用以下场景之一。
命令行脚本
对于调试命令行脚本,请将自定义 -dxdebug.remote_mode=jit (适用于 Xdebug 2)或 -dxdebug.start_upon_error=yes (适用于 Xdebug 3)指令指定为 附加配置选项:
按 Ctrl+Alt+S 打开设置,然后选择 。
从 PHP 可执行文件 列表中选择相关的 PHP 解释器,然后单击其旁边的
。
在打开的 CLI 解释器 对话框中,单击
字段旁边的 配置选项 ,在 其他 区域中。
在打开的 配置选项 对话框中,单击
以添加新条目。
在 配置指令 字段中输入
xdebug.start_upon_error,在 值 字段中输入yes。在 配置指令 字段中输入
xdebug.remote_mode,在 值 字段中输入jit。单击 确定(O) 后,您将返回到 CLI 解释器 对话框,其中 配置选项 字段显示
-dxdebug.remote_mode=jit(适用于 Xdebug 2)或-dxdebug.start_upon_error=yes(适用于 Xdebug 3)。
Web 服务器调试
确保本地或远程 Web 服务器上的调试引擎已正确配置。 有关更多信息,请参见 验证调试引擎的配置。
打开报告为已加载并与 Xdebug 关联的 php.ini 文件。
在 php.ini 文件中,找到
[xdebug]部分。将
xdebug.start_upon_error的值从默认默认更改为yes。将
xdebug.remote_mode的值从默认req更改为jit。
配置在 Docker 容器中运行的 Xdebug
要配置在 Docker 容器中运行的 Xdebug,请在 Dockerfile 中提供 Xdebug 特定参数,例如:
在此示例中,我们正在修改 /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini ,提供 mode 和 client_host Xdebug 参数。
请注意, xdebug.client_host 值应替换为从 Docker 容器可访问的运行 PhpStorm 的机器的 IP 地址。 如果您使用的是 Docker for Windows或 Docker for Mac ,您可以将 xdebug.client_host 设置为 host.docker.internal ,它会自动解析为主机的内部地址,使您可以轻松地从容器连接到它。
在此示例中,我们正在修改 /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini ,提供 remote_enable 和 remote_host Xdebug 参数。
请注意, xdebug.remote_host 值应替换为从 Docker 容器可访问的运行 PhpStorm 的机器的 IP 地址。 如果您使用的是 Docker for Windows或 Docker for Mac ,您可以将 xdebug.remote_host 设置为 host.docker.internal ,它会自动解析为主机的内部地址,使您可以轻松地从容器连接到它。
配置在 Vagrant 实例中运行的 Xdebug
要配置在 Vagrant实例中运行的 Xdebug,请 连接到 Vagrant 机器 ,并在 php.ini 文件中提供 Xdebug 特定参数:
请注意, xdebug.client_host 值为 10.0.2.2。 这是默认 Vagrant 设置中使用的网关,允许从实例连接到运行 PhpStorm 的主机。
请注意, xdebug.remote_host 值为 10.0.2.2。 这是默认 Vagrant 设置中使用的网关,允许从实例连接到运行 PhpStorm 的主机。