PhpStorm 配置 Xdebug 代码审计环境
- 参考文章:
- 之前一直想配置一个
PHP
的代码审计环境,但是又不常用。最近刚好有培训要用到这块,整理一下内容方便后续上课使用(坑是真的多,淦)。
CentOS7 + BT + Xdebug
- 有的伙伴会有疑问,为什么要使用宝塔,而不是像
PhpStudy
、LNMP
等环境工具。 - 其实理由非常简单,宝塔的几乎个个版本都封装了
Xdebug
,这就让安装的过程就变得很简单。 - 其次,
Xdebug
官网对于Linux
只提供了源码安装,编译过程很容易失败(失败了 N 次)。
CentOS7 + BT 安装
- 之前有写过
Ubuntu18.04
和宝塔的安装文章,CentOS
和Ubuntu
大同小异,具体可以看:Linux 安装宝塔面板。 - 为什么不选
Ubuntu
?因为CentOS7
对于宝塔的兼容性是最好的QAQ。 - 为了后续使用方便,修改一下宝塔面板的账号密码:
1 | [root@localhost ~]# bt |
- 在安装中间件时,这里我们选择
LAMP(Apache + MySQL + PHP)
:
Xdebug 安装
Xdebug 介绍
Xdebug
是一个用于PHP
调试和性能分析的开源工具。它提供了一组功能强大的功能,有助于开发人员调试和分析他们的PHP
应用程序。- 下面是
Xdebug
的一些主要特性:- 代码调试:
Xdebug
允许开发人员在PHP
代码中设置断点并逐行执行代码。它提供了单步调试、条件断点、函数追踪和堆栈跟踪等功能,帮助开发人员定位和解决代码中的错误。 - 错误报告:
Xdebug
生成更详细和有用的错误报告,包括堆栈跟踪信息、变量值和表达式求值结果。这有助于开发人员更快地发现和修复代码中的错误。 - 性能分析:
Xdebug
可以生成性能分析报告,显示PHP
应用程序中每个函数的执行时间和内存消耗等信息。这有助于开发人员找出应用程序中的瓶颈,并进行性能优化。 - 远程调试:
Xdebug
支持远程调试,允许开发人员通过网络连接到远程服务器上运行的PHP
应用程序,并进行调试操作。这对于调试生产环境中的问题非常有用。 - 代码覆盖率:
Xdebug
可以生成代码覆盖率报告,显示哪些代码行被执行过,哪些代码行没有执行到。这对于测试代码覆盖率非常有用。
- 代码调试:
- 官网地址:https://xdebug.org/
Xdebug 扩展
- 点击左下角软件商店:
- 在应用搜索中搜索
PHP
,找到之前安装的版本,点击设置:
- 点击安装扩展:
- 找到
Xdebug
扩展,点击安装:
- 点击服务,点击重载配置:
- 查看
Xdebug
插件安装情况,点击左下方phpinfo
:
Xdebug 测试网站
- 点击左上方网站:
- 点击添加站点:
- 简单输入自己想要的域名即可:
- 由于网站是搭建在
CentOS7
虚拟机中,物理主机无法访问,需要在本地配置hosts
文件的域名映射:
1 | 10.10.8.137 www.test.com |
- 尝试访问该域名:
- 访问成功,说明配置无误。
- 现在需要修改网站目录下的文件,编写一个
phpinfo
文件,点击文件:
- 点击进刚配置的网站根目录,将配置文件全部清除:
- 新建一个
php
文件,写入phpinfo
:
- 访问一下:
- 这里就出现了问题,找不到
Xdebug
加载结果:
- 所以这里不得不做出一个选择了,切换
PHP
版本,经过多次尝试结果如下(截至2023.10.23
):
PHP 版本 | 是否能使用 Xdebug 扩展 |
---|---|
PHP 8.2 | 无 Xdebug 可安装 |
PHP 8.1 | 无 Xdebug 可安装 |
PHP 8.0 | 加载 Xdebug |
PHP 7.4 | 不加载 Xdebug |
PHP 7.3 | 加载 Xdebug |
PHP 7.2 | 加载 Xdebug |
PHP 7.1 | 加载 Xdebug |
PHP 7.0 | 加载 Xdebug |
PHP 5.6 | 加载 Xdebug |
PHP 5.5 | 加载 Xdebug |
PHP 5.4 | 不加载 Xdebug |
PHP 5.3 | 不加载 Xdebug |
PHP 5.2 | BT 不支持 |
- 经过漫长的实验,安装了如下
PHP
:PHP 7.4
PHP 7.2
PHP 5.4
php.ini 配置
- 分别切换
PHP 7.2
和PHP 5.4
查看phpinfo
信息:
- 我们可以发现,这俩
PHP
中的Xdebug
插件版本是不一样的,意味着后续我们写入php.ini
的配置也是不一样的。
注:
- Xdebug2 是较旧的版本,是在 Xdebug 的开发历史中的前一个主要版本。它提供了许多强大的调试功能,如代码跟踪、断点设置、变量查看、性能分析等。Xdebug2 可以与 PHP 5.x 和较早的版本兼容。
- Xdebug3 是 Xdebug 的最新版本(PHP 7.x 或更新版本),于 2020 年发布。Xdebug3 引入了一些重要的改进和新功能。
Xdebug 3
- 例如现在我使用的是
PHP 7.2
版本,需要在配置文件末尾添加如下字段:
1 | [xdebug] |
- 重载一下
PHP
配置:
Xdebug 2
- 同
Xdebug 3
配置即可:
1 | [xdebug] |
PhpStorm
注:
- 千万千万不要用最新版的 PhpStorm(2023.2)会出现各种意外,导致连不上。
- 这里使用的 PhpStorm 版本为:2021.1.4。
预配置
- 现在本地创建一个同步的目录:
- 点击设置,找到
PHP
服务器,进行如下配置:
验证 Web 服务器上的调试器配置
- 点击调试,选中验证:
- 选中远程
Web
服务器,脚本路径选择之前创建的目录,在部署服务器之前还需要进行SFTP
连接:
- 配置一个
SSH
:
- 由于本地配置了域名解析,可以直接通过域名连接:
- 配置一下根路径,选择宝塔网站根目录即可,
Web
服务器直接填写域名:
- 本地路径选择之前创建的目录,部署路径直接
/
即可:
- 配置完成了,验证一下:
- 全部打勾说明配置成功。
安装浏览器工具栏或小书签
- 验证完之后点击浏览器工具栏或小书签:
- 点击对应浏览器插件进行下载:
- 点击添加:
- 安装完成便可使用:
启用 PHP 调试连接侦听
- 点击上方添加配置,选择
PHP
远程调试:
- 取个名称,点击确定:
SFTP 文件同步
- 为了同步本地和服务器的配置,需要配置一个自动同步:
- 配置自动覆盖:
- 简单使用,同步服务器文件:
使用工具栏或者小书签在浏览器中启动调试会话
- 代码调试,点击上方调试按钮:
- 点击
Debug
:
- 刷新页面:
- 查看
Debuger
,发现一个报错,尚未添加文件映射,添加以下:
测试
- 编辑一串代码:
GET
方式传参:
- 成功识别到参数输入:
- 结果如下:
Windows + PhpStudy + Xdebug
Windos + PhpStudy 安装
- 这个安装就不说了,基本操作。
- 这里我的配置是:
Windows 11
PhpStudy Pro 8.1
Xdebug 安装
Xdebug 扩展
PHPStudy
官方也是封装好了Xdebug
的,下面是存在Xdebug
版本对应扩展文件的默认位置情况。- 打开
PHP
文件位置:
- 直接在目录中搜索
Xdebug
即可:
php.ini 配置
Xdebug 3
1 | [Xdebug] |
Xdebug 2
1 | [Xdebug] |
结果验证
- 添加一个 PHP 服务器:
- 验证
PHP 5.4(Xdebug 2)
配置:
- 验证
PHP 7.3(Xdebug 3)
配置:
- 验证结果:
Windows + PhpStudy + Xdebug(极简版)
- 前面说了,PhpStudy 官方已经有了 Xdebug 得扩展,但是却没有帮忙配置扩展,这明显不合理。
- 在几个月后得某一天,突然开窍,给我找到了:
- 把 php_xdebug 打开,那么在当前得 PHP 的 php.ini 中会自动添加 Xdebug 的配置:
1 | [Xdebug] |
- 但这里有一点需要注意,需要把以下内容进行修改:
1 | xdebug.remote_enable=On |
- 之后的步骤就和上述一致了,不做赘述。
Xdebug 调试超时问题
- 上面的
Xdebug
配置完之后,每次使用大概45
秒后,网页就会报500
错误中断程序,也就是请求超时的意思。 - 百度了一会,找到了一篇解决办法:https://maoshu.fun/archives/801.html
- 在
apache
配置文件httpd.conf
的最后面增加如下内容即可:
1 | Timeout 3600 |
- 修改后重启下
apache
即可生效。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yongz丶!