PHPSTORM+Xdebug+PHP

本篇文章,主要关于如何使用 PHPXdebug 扩展来对代码进行调试,使用 PHPStorm

涉及两种情况:

  1. 运行环境在本地局域网内(非本机)
  2. 运行环境在外网(公网)

参考文章:
可能是全网最详细的PhpStorm+xdebug远程调试php代码的教程
Xdebug 远程调试,你会用吗?

Debug原理

PHPSTORM+Xdebug+PHP

XdebugPHPStorm 建立连接的过程。

PHPSTORM+Xdebug+PHP

统一的配置

下面是一些统一的配置。

服务器

配置 php.ini ,下面各配置项的具体含义可翻阅参考文章或官方文档,此处仅做展示。

zend_extension=xxx
xdebug.client_port=9001
xdebug.mode=debug //必须填debug模式
xdebug.idekey=PHPSTORM
PHPStorm

IDE 的配置分为两个部分,如图,参考文章内的介绍实测可用。
PHPSTORM+Xdebug+PHP

这里需要注意的是 Use path mappings,需要保证本地的代码和服务器上的代码完全一致。
PHPSTORM+Xdebug+PHP

运行环境在本机局域网内(非本机)

除了统一配置之外,针对局域网环境的 php.ini 配置。

xdebug.discover_client_host=on

运行环境在外网(非局域网或公网)

xdebug.client_host=127.0.0.1 //必须是127.0.0.1 或者 localhost

公网相比于局域网有一些特殊,在于本机(也就是 PHPStorm)的定位问题,通过 IP 无法定位到本机,也就无法和 PHPStorm 建立连接,这里需要用到 SSH 的隧道转发,如何配置,参考文章里列举了两种不同的设置方式,包括如何检验是否配置OK。

使用注意点

  1. php.ini 配置修改之后,要重启 php-fpm
  2. phpstorm 开启 debug 的顺序
    开启之前
    PHPSTORM+Xdebug+PHP
    正常开启之后,可以看到小图标的状态发生了变化
    PHPSTORM+Xdebug+PHP
  3. 配置 servers 时要注意 mapping ,确保本机和服务器的代码一致(使用 git 或者 ftp 较方便),以免找不到代码
  4. 服务器端口放开,需要检查安全组以及防火墙( selinux, firewalld , iptables)
  5. 触发 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
PHPSTORM+Xdebug+PHP
mapping 除了根目录匹配之外,还需要配置 index.phpvendor 以及你需要 debug 的文件目录。

PHPSTORM+Xdebug+PHP

本作品采用《CC 协议》,转载必须注明作者和本文链接
城里的野山参
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
69
粉丝
10
喜欢
30
收藏
41
排名:571
访问:1.4 万
私信
所有博文
社区赞助商