环境检查与准备 登录宝塔面板和服务器终端,首先确认已安装的 PHP 版本(通常在/www/server/php/目录下),记下要调试的 PHP 版本号(如 7.4、8.0)。检查 Swoole 扩展是否已安装,如果未安装需要
环境检查与准备登录宝塔面板和服务器终端,首先确认已安装的 PHP 版本(通常在 /www/server/php/ 目录下),记下要调试的 PHP 版本号(如 7.4、8.0)。检查 Swoole 扩展是否已安装,如果未安装需要先安装。确保系统已安装必要的编译工具:gcc、g++、make、cmake、autoconf 等。CentOS 系统使用 yum 安装,Ubuntu/Debian 使用 apt 安装。特别要注意 cmake 版本需要 3.5 以上,如果版本过低需要从源码编译升级。 服务器安装yasd1.安装yasd登录宝塔面板和服务器终端,首先确认服务器已安装 cmake 3.5 以上版本,如果没有需要先安装或升级。然后从 GitHub 下载 yasd 源码到服务器,进入源码目录。使用宝塔已安装 PHP 对应的 phpize 命令来准备编译环境,这一步很关键,必须使用宝塔路径下的 phpize(如 /www/server/php/74/bin/phpize)。接着创建单独的 build 目录,运行 cmake 进行配置,这里需要指定正确的 PHP 配置路径和包含目录。最后执行 make 命令进行编译,编译完成后运行 make install 完成安装。 按照官方文档,Yasd调试器官方文档
2.查看是否编译成功编译结束后,检查 yasd 可执行文件是否生成。通常安装成功后,yasd 会安装在 /usr/local/bin/ 或指定的安装目录下。可以通过运行 yasd --version 命令查看版本信息来确认安装是否成功。同时也要检查是否生成了 yasd 的 PHP 扩展文件(yasd.so)。
3.成功之后记得修改php.ini,改完之后重载配置文件打开宝塔对应 PHP 版本的 php.ini 配置文件,在文件末尾添加 yasd 扩展的加载指令。需要设置 yasd 为远程调试模式,配置调试服务器监听的 IP 地址和端口号(通常使用 19000 端口)。还需要设置相关的调试参数,如日志级别、断点文件路径等。配置完成后,需要在宝塔面板中重载 PHP 配置,或者通过命令行重启 PHP-FPM 服务使配置生效。
4.重启之后记得也重启一下swoole修改配置后,必须重启 Swoole 服务。根据你的 Swoole 项目启动方式,如果是常驻进程,需要先停止当前运行的 Swoole 服务,然后重新启动。重启时系统会加载新的 yasd 配置。观察启动日志,确保没有错误信息,特别是要确认 yasd 扩展已成功加载。 5. 检查Swoole服务运行状态启动成功后,检查 Swoole 服务运行状态,确保没有报错信息,这说明服务器端 yasd 配置已经完成。此时需要在服务器防火墙和宝塔面板安全设置中放行 19000 端口。如果是云服务器,还需要在云服务商的安全组规则中添加 19000 端口的入站允许。 在本地phpstrom上设置
1.添加服务器信息,设置连接、映射目录打开 PHPStorm,进入设置界面,在 Deployment 选项中添加新的服务器配置。设置服务器名称、类型选择 SFTP,填写服务器 IP 地址、SSH 端口号、用户名和密码或密钥。配置本地项目目录与服务器目录的映射关系,这是调试能否成功的关键,必须确保本地文件路径与服务器文件路径正确对应。
2.设置php的CLI解释器,用服务上的信息在 PHPStorm 的 PHP 设置中,添加远程 CLI 解释器。选择从 Docker、Vagrant 等配置,但实际上要选择远程服务器。配置 SSH 连接信息,使用与部署相同的认证方式。设置完成后,PHPStorm 会获取服务器上的 PHP 版本信息和配置路径,确保这里显示的 PHP 版本与服务器实际版本一致。
3.设置xdebug信息进入 PHPStorm 的调试设置,选择 DBGp Proxy 作为调试器类型。设置 IDE 密钥(可以自定义),主机填写本地机器 IP,端口设置为 19000。配置路径映射,这里要特别注意,映射关系必须正确,否则断点无法命中。还可以设置最大连接数、超时时间等高级选项。
端口映射xshell中要设置映射端口
调试的时候需要启动xshell的服务器由于 yasd 调试服务器运行在远端服务器的 19000 端口,本地 PHPStorm 无法直接访问,需要通过 SSH 隧道进行端口转发。打开 Xshell 或其它 SSH 客户端,创建到服务器的连接。在连接属性中,设置隧道规则,将本地 19000 端口转发到服务器的 19000 端口。这样当 PHPStorm 连接到本地的 19000 端口时,流量实际上通过 SSH 隧道转发到了服务器的 yasd 调试服务器。 调试1.启动ssh对话框首先启动 Xshell 连接到服务器,确保端口转发隧道已建立。可以通过 netstat 命令检查本地 19000 端口是否处于监听状态。保持这个 SSH 连接窗口开启,不要关闭,否则隧道会断开。
2.进入网站目录通过 SSH 连接到服务器后,切换到 Swoole 项目的根目录。检查项目文件,确保代码是最新版本。也可以在这里查看日志文件,了解之前的运行状态。
3.命令启动 swoole在服务器命令行中,使用特定的调试参数启动 Swoole 服务。通常需要在启动命令中添加 yasd 的调试选项,让 Swoole 在调试模式下运行。启动后,观察控制台输出,应该能看到 yasd 调试器已初始化的提示信息。
可以了
4.断点测试 回到本地 PHPStorm,在代码中设置断点。点击 PHPStorm 的调试按钮开始监听。触发 Swoole 服务的相应接口或功能,当执行到断点位置时,PHPStorm 会自动捕获并进入调试模式。此时可以查看变量值、调用栈,进行单步调试等操作。调试完成后,记得在服务器上正常停止 Swoole 服务。
完美解决swoole不能用xdebug调试的问题 总结整个流程需要注意网络稳定性,特别是在进行端口转发时。调试过程中如果遇到断点不命中问题,需要检查目录映射是否正确、yasd 配置是否生效、以及防火墙设置是否允许连接。 |
2024-04-02
2024-02-26
2023-01-24
2024-09-30
2022-08-15