用 IDE 写代码的好处除了强大的自动补全和错误检查之外,调试也是至关重要的。但受限于 PHP 的特性,想要在 IDE 中直接调试,就必须借助 PHP 的扩展:Xdebug。

前言

最近在写一个骰子机器人,用到了 CoolQ HTTP API 插件,需要对传入的请求进行解析。指令花样繁多,单纯地用 var_dump() 来查看运行过程自然是不太行,这个时候就需要用 Xdebug 搭配 PhpStorm 来进行调试了。

运行环境

为了还原服务器的真实环境,我用 VMware Workstation 创建了一个 Debian 10.3 虚拟机来运行 Apache 和 PHP。

截止本文发布,官方源及镜像的 PHP 最新版本为 7.3,PHP 7.4 的安装可参考 Debian 下安装 Nginx 和 PHP-FPM

主机

  • Windows 10
  • PhpStorm 2019.3.4

虚拟机

  • Debian 10.3 (静态 IP 地址,192.168.254.20)
  • Apache 2.4.38
  • PHP 7.4.4

Xdebug

安装

安装 Xdebug 很简单:

sudo apt install php-xdebug

配置

配置也很轻松,在 /etc/php/7.4/mods-available 目录中找到 xdebug.ini,并写入以下内容:

zend_extension = xdebug.so
xdebug.idekey = PHPSTORM
xdebug.remote_connect_back = true
xdebug.remote_enable = true
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.remote_port = 9000

其中,xdebug.remote_connect_backxdebug.remote_host 选择一个使用即可。xdebug.remote_connect_back 设置为 true 的话,xdebug.remote_host 会被忽略。

之后重新启动 Apache,配置就完成了:

systemctl restart apache2

PhpStorm

部署环境设置

File -> Settings 打开设置菜单,在 Build, Execution, Deployment -> Deployment 菜单页中设置部署环境信息。

Connection 标签页设置连接信息:

Connection 标签页
Connection 标签页

Root path 必须是 “/”,否则接下来设置 Deployment path 之后会导致项目文件被上传到奇怪的位置。以及这里的 Port 指 SFTP 端口。

Mappings 标签页设置路径映射信息:

Mappings 标签页
Mappings 标签页

Deployment path 填写你的项目在虚拟机上的部署路径。

PHP 调试设置

Languages & Frameworks -> PHP 中设置 PHP 调试信息。

Debug 菜单页中设置调试选项:

Debug 菜单页
Debug 菜单页

Xdebug -> Debug port 的端口值可以随意修改,和之前设置的 xdebug.remote_port 保持一致即可。

之后在 Debug -> DBGp Proxy 菜单页中设置 DBGp 代理选项:

DBGp Proxy 菜单页
DBGp Proxy 菜单页

IDE key 也是可以任意设置的,只要和之前设置的 xdebug.idekey 保持一致即可;Port 同样与 xdebug.remote_port 保持一致。

PHP 服务器设置

Languages & Frameworks -> PHP -> Servers 中设置 PHP 服务器信息:

Servers 菜单页
Servers 菜单页

注意这里的 Port 是指 HTTP 端口,一般是 80,由于我在虚拟机中还有其他项目,所以使用了 8080。Debugger 选择 Xdebug 即可。

调试

接下来就可以开始愉悦的调试了。

右上角的工具栏
右上角的工具栏

点击右上角工具栏的三角 -> Edit Configurations,就可以根据你的需要新增各种调试设置了。比如我新增了一个 PHP HTTP Request:

PHP HTTP Request
PHP HTTP Request

Server 处选择你刚才新增的服务器,URL 处填写你要调试的 URL,之后选择 Request method 再填写相关参数,保存即可。

之后还是在右上角工具栏,开启小电话,设置断点,点击爬虫图标,调试就正式开始了:

调试窗口
调试窗口

除了调试 HTTP 请求外,PhpStorm 还支持直接调试 PHP 脚本,或者直接调试网页:

PHP Web Page
PHP Web Page

当然你需要先根据引导,在 Chrome 中安装 Xdebug 插件,然后右键点击浏览器右上角的灰色小爬虫图标,点击选项,在 IDE Key 中选择 PhpStorm:

Xdebug helper 选项页
Xdebug helper 选项页

之后在需要调试的页面点击小爬虫选择 Debug,就可以开始调试网页了!记得在 PhpStorm 右上角的工具栏里开启小电话。

相关文档