准备
如果使用PhpStorm调试,仅需要上图所说的这几步
- 安装 Xdebug 或者 Zend Debugger.
- 开启 Start Listening for PHP Debug Connections.
- 配置 Debug 端口,别忘记勾选 Can accept external connections.
- 打好断点,启动网页进行调试.
安装
安装boost扩展
macOS
brew install boost
Ubuntu
apt install libboost-all-dev
CentOS
yum install boost boost-devel
安装yasd
git clone https://github.com/swoole/yasd.git
phpize --clean && \
phpize && \
./configure && \
make clean && \
make && \
make install
设置 php.ini
zend_extension=yasd
通过 php --ri yasd 查看配置情况
IDE调试模式
zend_extension=yasd
yasd.debug_mode=remote
yasd.remote_host=127.0.0.1
yasd.remote_port=9999
注:因为9000端口与php-fpm冲突,这里设置成9999或者其他,你可以使用其他未使用的端口作为调试端口,修改端口后应与PhpStorm,VSCode里配置的端口保持一致
cmd调试模式
zend_extension=yasd
yasd.debug_mode=cmd
注:Yasd已经支持PhpStorm,VSCode断点调试,当配置了IDE模式调试后,yasd就直接可以使用断点调试了,对于简单的调试可以参考文末的参考链接
配置 PhpStorm
PHP 运行环境设置
由于yasd是基于php -e 命令生成的额外调试信息,而PhpStorm默认的调试并不带有 -e 的参数,所以我们需要在单元测试前做一些改进,我是通过编写一个shell脚本的方式来实现的
cat ~/bin/php
#!/usr/bin/env zsh
/usr/local/bin/php -e "$@"
phpstorm设置
然后在PhpStorm中添加该脚本作为php的解释器,在PhpStorm的Preferences -> Languages & Frameworks -> PHP面板中添加CLI Interpreters,选择配置的解释器后点击Apply。
PHPUnit设置
因为Hyperf是基于Swoole协程框架,原生的phpunit是无法调试的,需要使用Hyperf提供的co-phpunit,可以在PhpStorm的Preferences -> Languages & Frameworks -> PHP -> Test Frameworks面板中本地环境
点击面板中的“+”添加PHPUnit Local,选择Path to phpunit.phar,在Path中选择当前项目的vendor/bin/co-phpunit文件,在Run Tester的Default configration file中选择当前项目中的phpunit.xml文件,点击Apply。
调试单元测试前,需要开启 Start Listening for PHP Debug Connections.
之后就可以像之前调试Lavavel项目那样断点调试Hyperf了。
注意
当开启Start Listening for PHP Debug Connections(PHP调试连接监听器)后,不论是使用PHPStorm的Debug还是Run都会触发断点调试,所以用完后记得停止PHP调试连接监听器。