用 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 标签页