PHPSTORM+Xdebug+PHP
本篇文章,主要关于如何使用 PHP 的 Xdebug 扩展来对代码进行调试,使用 PHPStorm。
涉及两种情况:
- 运行环境在本地局域网内(非本机)
- 运行环境在外网(公网)
参考文章:
可能是全网最详细的PhpStorm+xdebug远程调试php代码的教程
Xdebug 远程调试,你会用吗?
Debug原理

Xdebug 与 PHPStorm 建立连接的过程。

统一的配置
下面是一些统一的配置。
服务器
配置 php.ini ,下面各配置项的具体含义可翻阅参考文章或官方文档,此处仅做展示。
zend_extension=xxx
xdebug.client_port=9001
xdebug.mode=debug //必须填debug模式
xdebug.idekey=PHPSTORM
PHPStorm
IDE 的配置分为两个部分,如图,参考文章内的介绍实测可用。
这里需要注意的是 Use path mappings,需要保证本地的代码和服务器上的代码完全一致。
运行环境在本机局域网内(非本机)
除了统一配置之外,针对局域网环境的 php.ini 配置。
xdebug.discover_client_host=on
运行环境在外网(非局域网或公网)
xdebug.client_host=127.0.0.1 //必须是127.0.0.1 或者 localhost
公网相比于局域网有一些特殊,在于本机(也就是 PHPStorm)的定位问题,通过 IP 无法定位到本机,也就无法和 PHPStorm 建立连接,这里需要用到 SSH 的隧道转发,如何配置,参考文章里列举了两种不同的设置方式,包括如何检验是否配置OK。
使用注意点
php.ini配置修改之后,要重启php-fpmphpstorm开启debug的顺序
开启之前
正常开启之后,可以看到小图标的状态发生了变化
- 配置
servers时要注意mapping,确保本机和服务器的代码一致(使用git或者ftp较方便),以免找不到代码 - 服务器端口放开,需要检查安全组以及防火墙(
selinux,firewalld,iptables) - 触发
debug只需要在请求链接后加?XDEBUG_SESSION_START=xxx(随意填写),或者是在cookie中设置DEBUG_SESSION=xxx(随意填写)。都可以触发debug。
changelog
20211118
碰到了 mapping 问题,按照前面的步骤全部弄妥当之后,发起请求依然无法正常 debug。如果正常监听,发起请求之后,phpstorm 右下角会有一个 warning 的弹窗提示,提示文件 mapping 设置存在问题,可以开启 Run->Break at file line in PHP scripts 从脚本的第一行开始 debug。
mapping 除了根目录匹配之外,还需要配置 index.php ,vendor 以及你需要 debug 的文件目录。

本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: