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
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 10
CodingHePing

继续顶

8个月前 评论
CodingHePing

我最近在研究swow,也用swow封装了一些组件,redis红锁,分布式锁。通过web在线调试hyperf框架。

8个月前 评论
Crayxn (楼主) 8个月前
yles

mac 能用吗

3个月前 评论
Crayxn (楼主) 3个月前

我启动的时候可以断点调试,可是我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

1个月前 评论
Crayxn (楼主) 1个月前

我这连pg的时候进程总是退出,蛋疼 WARNING Server::check_worker_exit_status(): worker(pid=12373, id=8) abnormal exit, status=0, signal=11

1周前 评论
Crayxn (楼主) 1周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!