CentOS7 + BT + Xdebug

  • 有的伙伴会有疑问,为什么要使用宝塔,而不是像 PhpStudyLNMP 等环境工具。
  • 其实理由非常简单,宝塔的几乎个个版本都封装了 Xdebug,这就让安装的过程就变得很简单。
  • 其次,Xdebug 官网对于 Linux 只提供了源码安装,编译过程很容易失败(失败了 N 次)

CentOS7 + BT 安装

  • 之前有写过 Ubuntu18.04 和宝塔的安装文章,CentOSUbuntu 大同小异,具体可以看:Linux 安装宝塔面板
  • 为什么不选 Ubuntu?因为 CentOS7 对于宝塔的兼容性是最好的QAQ
  • 为了后续使用方便,修改一下宝塔面板的账号密码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@localhost ~]# bt
===============宝塔面板命令行==================
......
===============================================
请输入命令编号:6
===============================================
正在执行(6)...
===============================================
请输入新的面板用户名(≥3位):yongz
|-新用户名: yongz
[root@localhost ~]# bt
===============宝塔面板命令行==================
......
===============================================
请输入命令编号:5
===============================================
正在执行(5)...
===============================================
请输入新的面板密码:Goktech@123
|-用户名: yongz
|-新密码: Goktech@123
  • 在安装中间件时,这里我们选择 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.2PHP 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
2
3
4
5
6
7
8
9
[xdebug]
; 远程调试端口
xdebug.client_host=10.10.8.1
; 远程调试地址
xdebug.client_port=9000
; 开启 debug 模式
xdebug.mode=debug
; key 值
xdebug.idekey="PHPSTORM"

  • 重载一下 PHP 配置:

Xdebug 2

  • Xdebug 3 配置即可:
1
2
3
4
5
6
7
8
9
10
11
[xdebug]
; 开启远程调试功能
xdebug.remote_enable=On
; 远程调试地址
xdebug.remote_host=10.10.8.1
; 远程调试端口
xdebug.remote_port=9000
; 指定与调试客户端通信时使用的远程处理程序
xdebug.remote_handler=dbgp
; key 值
xdebug.idekey="PHPSTORM"

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
2
3
4
5
6
7
[Xdebug]
zend_extension=E:/phpstudy_pro/Extensions/php/php7.3.4nts/ext/php_xdebug.dll
xdebug.remote_enable=1
xdebug.client_host=localhost
xdebug.client_port=9000
xdebug.mode=debug
xdebug.idekey="PHPSTORM"

Xdebug 2

1
2
3
4
5
6
7
[Xdebug]
zend_extension=E:/phpstudy_pro/Extensions/php/php5.4.45nts/ext/p
xdebug.remote_enable=On
xdebug.remote_host=10.10.8.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.idekey="PHPSTORM"

结果验证

  • 添加一个 PHP 服务器:

  • 验证 PHP 5.4(Xdebug 2)配置:

  • 验证 PHP 7.3(Xdebug 3)配置:

  • 验证结果:

Windows + PhpStudy + Xdebug(极简版)

  • 前面说了,PhpStudy 官方已经有了 Xdebug 得扩展,但是却没有帮忙配置扩展,这明显不合理。
  • 在几个月后得某一天,突然开窍,给我找到了:

image-20240219091451162

  • 把 php_xdebug 打开,那么在当前得 PHP 的 php.ini 中会自动添加 Xdebug 的配置:
1
2
3
4
5
6
7
8
9
10
11
12
[Xdebug]
zend_extension=C:/phpstudy/phpstudy_pro/Extensions/php/php5.4.45nts/ext/php_xdebug.dll
xdebug.collect_params=1
xdebug.collect_return=1
xdebug.auto_trace=Off
xdebug.trace_output_dir=C:/phpstudy/phpstudy_pro/Extensions/php_log/php5.4.45nts.xdebug.trace
xdebug.profiler_enable=Off
xdebug.profiler_output_dir=C:/phpstudy/phpstudy_pro/Extensions/php_log/php5.4.45nts.xdebug.profiler
xdebug.remote_enable=Off
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
  • 但这里有一点需要注意,需要把以下内容进行修改:
1
xdebug.remote_enable=On
  • 之后的步骤就和上述一致了,不做赘述。

Xdebug 调试超时问题

  • 上面的 Xdebug 配置完之后,每次使用大概 45 秒后,网页就会报 500 错误中断程序,也就是请求超时的意思。
  • 百度了一会,找到了一篇解决办法:https://maoshu.fun/archives/801.html
  • apache 配置文件 httpd.conf 的最后面增加如下内容即可:
1
2
3
4
5
Timeout 3600
FcgidIOTimeout 3600
FcgidIdleTimeout 3600
IPCConnectTimeout 3600
IPCCommTimeout 3600
  • 修改后重启下 apache 即可生效。