用 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_back
和 xdebug.remote_host
选择一个使用即可。xdebug.remote_connect_back
设置为 true 的话,xdebug.remote_host
会被忽略。
之后重新启动 Apache,配置就完成了:
systemctl restart apache2
PhpStorm
部署环境设置
File -> Settings 打开设置菜单,在 Build, Execution, Deployment -> Deployment 菜单页中设置部署环境信息。
Connection 标签页设置连接信息:
Root path 必须是 “/”,否则接下来设置 Deployment path 之后会导致项目文件被上传到奇怪的位置。以及这里的 Port 指 SFTP 端口。
Mappings 标签页设置路径映射信息:
Deployment path 填写你的项目在虚拟机上的部署路径。
PHP 调试设置
在 Languages & Frameworks -> PHP 中设置 PHP 调试信息。
在 Debug 菜单页中设置调试选项:
Xdebug -> Debug port 的端口值可以随意修改,和之前设置的 xdebug.remote_port
保持一致即可。
之后在 Debug -> DBGp Proxy 菜单页中设置 DBGp 代理选项:
IDE key 也是可以任意设置的,只要和之前设置的 xdebug.idekey
保持一致即可;Port 同样与 xdebug.remote_port
保持一致。
PHP 服务器设置
在 Languages & Frameworks -> PHP -> Servers 中设置 PHP 服务器信息:
注意这里的 Port 是指 HTTP 端口,一般是 80,由于我在虚拟机中还有其他项目,所以使用了 8080。Debugger 选择 Xdebug 即可。
调试
接下来就可以开始愉悦的调试了。
点击右上角工具栏的三角 -> Edit Configurations,就可以根据你的需要新增各种调试设置了。比如我新增了一个 PHP HTTP Request:
在 Server 处选择你刚才新增的服务器,URL 处填写你要调试的 URL,之后选择 Request method 再填写相关参数,保存即可。
之后还是在右上角工具栏,开启小电话,设置断点,点击爬虫图标,调试就正式开始了:
除了调试 HTTP 请求外,PhpStorm 还支持直接调试 PHP 脚本,或者直接调试网页:
当然你需要先根据引导,在 Chrome 中安装 Xdebug 插件,然后右键点击浏览器右上角的灰色小爬虫图标,点击选项,在 IDE Key 中选择 PhpStorm:
之后在需要调试的页面点击小爬虫选择 Debug,就可以开始调试网页了!记得在 PhpStorm 右上角的工具栏里开启小电话。
相关文档
- Xdebug: Documentation » All settings:如果需要自动跟踪、日志记录等功能,可以参阅这篇官方文档,修改 Xdebug 的配置文件。
Comments NOTHING