PHP搞微服务杂谈(五) 调试(swoole + xdebug)
准备工作
PHP >= 8.1
若还没搭建环境的 请参考 博客:PHP搞微服务杂谈(一)关于高效的开发环境搭建
Swoole >= 5.0.2
升级可以直接使用 Pecl (pecl upgrade swoole)或者参考 https://wiki.swoole.com
xdebug (latest)
安装最新版本即可,建议还是选择 pecl install xdebug
最后 php -m 检查 swoole、xdebug 是否都到位了
配置
xdebug 如何在ini里配置 我这边就啰嗦了,这个大家自行搜索。
今天要讲的不需要在ini里配置,我们根据每个项目灵活配置。
按下面步骤,这边以 Hyperf 框架为例
- PHPSTORM
设置 - PHP - 服务器 - 添加服务器
我这边是在WSL里运行项目,所以需要路径映射。Mac 本地是不需要的,Windows 需要借助 Docker/WSL/远程Linux 所以是需要路径映射。记住名称等会要用!
设置 - PHP - 服务器 - 调试
记住这两个端口,一般都是这两个,可以自行配置,记住就行
- Hyperf
回到项目里头,先安装插件
composer require --dev crayxn/hyperf-xdebug
配置
php bin/hyperf.php vendor:publish crayxn/hyperf-xdebug
编辑 config/autoload/xdebug.php
return [
'bin_path' => 'php', //可以自行选择php路径
'xdebug' => [
//配置宿主机ip
//如:使用docker运行,配置 host.docker.internal
//如:使用wsl运行,通过 ipconfig > vEthernet (WSL) > 找到ipv4地址
'client_host' => \Hyperf\Support\env('XDEBUG_CLIENT_HOST','127.0.0.1'),
// 配置PHPSTORM设置的调试端口
'client_port' => (int)\Hyperf\Support\env('XDEBUG_CLIENT_POST',9000),
'mode' => 'debug',
//支持自定义xdebug配置 以'k' => 'v'方式
],
// 配置PHPSTORM设置的服务器名称
'server_name' => \Hyperf\Support\env('XDEBUG_SERVER_NAME','Unnamed'),
];
运行前别忘记打开小虫子
运行
php bin/hyperf.php xdebug
成功会进入调试,按 F9 跳过,即可启动服务。
tips:记得每次断点后,重启生效
插件地址 github.com/crayxn/hyperf-xdebug
当然不使用插件也可以运行
php -d xdebug.client_host="127.0.0.1"
-d xdebug.client_port=9000
-d xdebug.mode=debug
bin/hyperf.php start
如果帮助到您,请给个赞,谢谢。
本作品采用《CC 协议》,转载必须注明作者和本文链接
from crayxn github.com/crayxn
继续顶
我最近在研究swow,也用swow封装了一些组件,redis红锁,分布式锁。通过web在线调试hyperf框架。
mac 能用吗
我启动的时候可以断点调试,可是我postman请求的时候却是没反应,这是哪里的问题呢 php8.1 swoole 5.1, xdebug3.2 用的是Vagrant+VirtualBox [xdebug] zend_extension=xdebug.so xdebug.mode = debug xdebug.client_port = 64808 xdebug.client_host = 192.168.56.1 xdebug.discover_client_host = 1 xdebug.idekey = PHPSTORM xdebug.start_with_request = yes
我这连pg的时候进程总是退出,蛋疼 WARNING Server::check_worker_exit_status(): worker(pid=12373, id=8) abnormal exit, status=0, signal=11