配置 Xdebug
下载 Xdebug
下载 Xdebug 扩展 与您的 PHP 版本兼容,并按照 Xdebug 安装指南 。
如果您使用的是预配置的 AMP(Apache、MySQL、PHP)软件包,则 Xdebug 扩展可能已安装。请参阅特定于您的软件包的说明。
将 Xdebug 与 PHP 引擎集成
打开活动 php.ini 编辑器中的文件。
如果调试引擎与 PhpStorm 安装在同一台机器上,请打开并编辑 php.ini 与 PhpStorm 中配置的 PHP 解释器关联的文件:
在里面 设置 对话框( Ctrl+Alt+S ) , 点击 PHP 。
在 PHP 在打开的页面中,点击
旁边是 CLI解释器 场地。
在里面 CLI 解释器 打开的对话框中, 配置文件 只读字段显示活动 php.ini 文件。点击 在编辑器中打开 。
禁用 Zend 调试器 和 Zend 优化器 阻止 Xdebug 的工具。为此,请删除或注释掉 php.ini 文件:
zend_extension=zend_extension= 启用 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。保存并关闭 php.ini 文件。
通过执行以下任一操作来验证 Xdebug 安装:
在命令行中运行以下命令:
php --version输出应该列出 调试工具 在已安装的扩展中:
创建一个 php 包含以下代码的文件:
phpinfo();在浏览器中打开该文件。
phpinfo
输出应包含 Xdebug 部分:
在 PhpStorm 中配置 Xdebug
检查 Xdebug 安装
按 Ctrl+Alt+S 打开设置,然后选择
。检查 调试工具 与所选 PHP 解释器相关的安装:
在 PHP 页面中,选择相关的 PHP 安装 CLI解释器 列出并点击
字段旁边。列表显示了 PhpStorm 中所有可用的 PHP 安装,请参阅 配置本地 PHP 解释器 和 配置远程 PHP 解释器 。
这 CLI 解释器 打开的对话框显示以下内容:
所选 PHP 安装的版本。
与所选 PHP 安装关联的调试引擎的名称和版本(Xdebug 或 Zend Debugger)。如果未配置调试器,PhpStorm 将显示相应的消息:
或者,打开 安装向导 ,粘贴输出
phpinfo()
,然后点击 分析我的 phpinfo() 输出 . 详细了解如何检查 调试工具 安装在 验证调试引擎的配置 。
定义 Xdebug 行为
在 IDE 设置中( Ctrl+Alt+S ), 选择 PHP 节点打开 调试 页。
根据在里面 调试工具 区域中,指定以下设置:
调试端口 :指定该工具与 PhpStorm 通信的端口。
这必须与 php.ini 文件:
xdebug.client_port="" xdebug.remote_port="" 默认情况下,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:
为了让 PhpStorm 在必要时激活 Xdebug,请在 调试器扩展 领域,在 额外的 区域。手动输入路径或点击
并在打开的对话框中选择位置。
配置 Xdebug 以在 Just-In-Time 模式下使用
PhpStorm 支持在 准时制(JIT) 模式,因此它不会一直连接到您的代码,而仅在发生错误或引发异常时才连接到 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
在里面 价值 场地。当您点击 好的 ,你返回到 CLI 解释器 对话框中 配置选项 实地表演
-dxdebug.remote_mode=jit
(对于 Xdebug 2)或-dxdebug.start_upon_error=yes
(适用于 Xdebug 3)。
Web 服务器调试
确保本地或远程 Web 服务器上的调试引擎已正确配置。有关更多信息,请参阅 验证调试引擎的配置 。
打开 php.ini 该文件被报告为已加载并与 Xdebug 关联。
在里面 php.ini 文件,找到
[xdebug]
部分。改变
xdebug.start_upon_error
从默认default
到yes
。改变
xdebug.remote_mode
从默认req
到jit
。
配置在 Docker 容器中运行的 Xdebug
配置在以下位置运行的 Xdebug Docker 容器中,提供 Xdebug 特定的参数 Dockerfile , 例如:
在这个例子中,我们修改
/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
提供
mode
和
client_host
Xdebug 参数。
请注意
xdebug.client_host
值应替换为运行 PhpStorm 的计算机的 IP 地址,该地址可从 Docker 容器访问。如果您使用
Windows 版 Docker
或者
Mac 版 Docker
,你可以设置
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
值应替换为运行 PhpStorm 的计算机的 IP 地址,该地址可从 Docker 容器访问。如果您使用
Windows 版 Docker
或者
Mac 版 Docker
,你可以设置
xdebug.remote_host
到
host.docker.internal
,它会自动解析为主机的内部地址,让您轻松地从容器连接到它。
配置在 Vagrant 实例上运行的 Xdebug
配置在以下位置运行的 Xdebug 流浪汉 实例, 连接到 Vagrant 机器 并在 php.ini 文件:
请注意
xdebug.client_host
值是
10.0.2.2
。这是默认 Vagrant 设置中使用的网关,允许从实例连接到运行 PhpStorm 的主机。
请注意
xdebug.remote_host
值是
10.0.2.2
。这是默认 Vagrant 设置中使用的网关,允许从实例连接到运行 PhpStorm 的主机。