基于Yasd的Hyperf框架调试
准备
如果使用PhpStorm调试,仅需要上图所说的这几步
- 安装 Xdebug 或者 Zend Debugger.
- 开启 Start Listening for PHP Debug Connections.
- 配置 Debug 端口,别忘记勾选 Can accept external connections.
- 打好断点,启动网页进行调试.
安装
安装boost扩展
macOS
1 | brew install boost |
Ubuntu
1 | apt install libboost-all-dev |
CentOS
1 | yum install boost boost-devel |
安装yasd
1 | git clone https://github.com/swoole/yasd.git |
设置 php.ini
1 | zend_extension=yasd |
通过 php –ri yasd 查看配置情况
IDE调试模式
1 | zend_extension=yasd |
注:因为9000端口与php-fpm冲突,这里设置成9999或者其他,你可以使用其他未使用的端口作为调试端口,修改端口后应与PhpStorm,VSCode里配置的端口保持一致
cmd调试模式
1 | zend_extension=yasd |
注:Yasd已经支持PhpStorm,VSCode断点调试,当配置了IDE模式调试后,yasd就直接可以使用断点调试了,对于简单的调试可以参考文末的参考链接
配置 PhpStorm
PHP 运行环境设置
由于yasd是基于php -e 命令生成的额外调试信息,而PhpStorm默认的调试并不带有 -e 的参数,所以我们需要在单元测试前做一些改进,我是通过编写一个shell脚本的方式来实现的
1 | cat /bin/php |
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调试连接监听器。