文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

windows + phpstorm + 虚拟机 + yasd 实现 hyperf 调试

2023-09-02 12:54

关注

在 Swoole 的官方文档中就明确指出了 Swoole 和 Xdebug 不兼容,虽然Xdebug 2.7 ,可用于 Swoole 环境进行断点、现在 Swoole 已经有了yasd,可以改用,毕竟 Swoole 和 Xdebug 存在兼容问题。(以下是从网上看了资料自己动手实现整理记录下来)

1.环境说明

1)windows10专业版

2)虚拟机系统centos7

3)phpstorm2021.3

4)php8.0.24

2.在虚拟机中安装php环境

虚拟机的安装和centos7在虚拟机中的安装就不在这里赘述了,可以去搜索其他文章了解

这里直接讲安装php环境 为了方便使用yum安装

1)首先安装remi扩展源(这里直接使用清华软件源)

yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm

2)确认一下能安装的php8.0和扩展

yum list | grep php80

3)安装php8.0和一些经常用到的扩展(如果有其他需要使用可自行加上)

yum install -y --enablerepo=remi-php80 php80 php80-php php80-php-xml php80-php-xmlrpc php80-php-pecl-mcrypt php80-php-fpm php80-php-pecl-apcu php80-php-mbstring php80-php-gd php80-php-json php80-php-pecl-json-post php80-php-pdo php80-php-mysqlnd php80-php-pecl-mysql php80-php-opcache php80-php-pear php80-php-soap php80-php-intl php80-php-devel php80-php-cli php80-php-bcmath php80-php-pecl-mongodb php80-php-pecl-redis php80-php-pecl-amqp php80-php-ftp php80-php-openssl php80-php-pecl-swoole5

4)确认安装结果(php的安装目录是/opt/remi/php74/root/  php-fpm工具也在里面

yum list installed | grep php

5)通过remi安装的php的指令是php80,这里建立一下软链接就可以直接使用指令php

ln -sf /usr/bin/php80 /usr/bin/php

6)查看安装的php版本

php -v

7)查看安装的php的扩展

php -m

8)由于hyperf中需要swoole关闭短标签,我们在这里关闭一下

757997711c064f00a0b467116de836e3.jpeg

 修改里面的内容

vi 40-swoole.ini 

swoole.use_shortname = Off

9)创建hyperf项目,hyperf的项目有两种网络引擎驱动swoole和swow,我这里使用swoole驱动,使用composer来创建项目(一路回车知道创建完成)

composer create-project hyperf/hyperf-skeleton

3.yasd的安装

由于remi扩展源中没有yasd扩展所以我们需要手动编译安装扩展

1)yasd需要先安装boost

yum install boost boost-devel

2)拉取master分支源码(github有时候网络差可以多试几次,也可以通过修改hosts的方式来加快速度)

git clone https://github.com/swoole/yasd.git

3)安装扩展(进入到拉取的yasd目录--使用php安装目录的phpize工具)

/opt/remi/php80/root/bin/phpize --clean && \/opt/remi/php80/root/bin/phpize && \./configure --with-php-config=/opt/remi/php80/root/bin/php-config && \make clean && \make && \make install

4)修改php.ini在最底下加上(通过remi源安装的php配置文件路径一般在/etc/opt/remi/php80/php.ini)注:这里的host要使用你phpstorm所在的主机地址

zend_extension=yasdyasd.debug_mode=remoteyasd.remote_host=192.168.2.52yasd.remote_port=9000

4.phpstorm配置远程代码同步更新和代码调试配置

1)phpstorm配置sftp

1,打开phpstorm,创建一个项目命名为hyperf-skeleton(可以根据自己情况命名)

2,点击工具栏的Tools=>Deployment=>Browser Remote Host:

8b64496cd39a4352bc05dfa5967ff170.jpeg

 1.3,点击... 进行配置后点击+号选sftp,输入sftp的名称(ftp等,大部分linux服务器默认开启sftp而没有ftp)

27b9497370044260817661ed02eed70c.jpeg

  sftp服务器(虚拟机)ip,ssh端口(默认22),账号密码

71c9f4ef446c459e88ed08462e67c091.jpeg

点击mapping,配置Deployment  Path,这个目录填写虚拟机中创建的hyperf项目的目录(项目运行目录),通过上传更新虚拟机文件或者下载虚拟机文件到本地 

f347c32aada044c6a34ad4de3c1403c6.jpeg

 勾选自动上传,每次修改完代码会自动上传到虚拟机服务器(复制粘贴,composer 等非编辑器修改的文件不会被上传,需要手动)

813d9833643a47c7868a2b499f51f6b1.jpeg

在Remote Host中对于的项目文件右键下载前面创建的项目文件到本地

2b916c41fa9c4708b61f36572b0ced6d.jpeg

到这步的时候,我们已经可以和服务器的文件目录同步文件了,你在本地修改过的文件可以自动上传的服务器中,服务器修改过的你也可以手动下载下来 

4,配置ssh终端,点击Tools=>Start SSH session,选择刚刚已经配置好的sftp配置名,就可以开启一个ssh终端

3d548fb39f284a219141b2ef5db69b92.jpeg

 5eb8c43a6b2f4eb1a3e15096d039fbbb.jpeg

 213100b087f54a4198648fb54098148e.jpeg

 配置好ssh的连接,接下来就可以在phpstorm 中使用ssh终端操作服务器(虚拟机)了

2)phpstorm配置php环境

1,在phpstorm中使用服务器(虚拟机)的php环境需要配置php环境,点击phpstorm菜单栏File=>Settings找到php配置点击...

84123ac24f0846be9be2a40a0b57d988.jpeg

2,点击加号=>From docker,Vagrant,VM.我们用的是VM方式 

50a865d50e3a45ff9e5850109fc98ac0.jpeg

选择ssh配置上我们之前就配置好的远程服务器 完成后ok-》ok

3)配置Debug中的调试端口和yasd中的远程端口一致

52adbbeb7e3243a6a9fe0b56b4ce8762.jpeg

5.使用phpstorm调试hyperf项目

1)打开PhpStorm右上角的小电话,开启PhpStorm监听debug设置的端口

e36c4e5c06bc49219633084ea3793c9e.png

 2)设置断点

需要注意:Hyperf项目启动时会生成代理类,所以打断点的时候需要在runtime/container/proxy/中的代理类中打断点

c1536d16e91e4f0b866a52de5a24c2f7.jpeg

 3)启动项目

使用yasd调试项目的时候需要增加-e参数

php -e ./bin/hyperf.php start

3d2339bfc9cb4a778282dd6038275f21.png 在之前phpstorm打开的ssh中进入到项目的目录 执行命令

4)去请求打了断点的接口就会发现代码停在了断点的位置(成功进入到断点)

c3ae9b8735284cb7be0b583a2ebe311e.png

需要注意的几点

1)在配置项目启动或请求断点接口的时候可以会碰到的问题
[yasd] recv command error, connection closed
[yasd] recv command error, Connection reset by peer

碰到这个报错的时候需要配置config.php中的SCAN_CACHEABLE为true(为ture表示启动时不扫描和生成代理类缓存,直接以现有的缓存文件作为最终代理类)设置为 true 后需要注意,每次修改代码需要手动生成代理类,composer dump-autoload -o,然后在启动。或者直接在代理类中修改代码,当 debug 结束后,再将代理类中的代码复制到真实类中。

2)在 Hyperf 框架中如果使用到了 Swoole Server,需要将 worker_num 设置为 1 否则断点可能不会生效。该参数在 server.php 中。

来源地址:https://blog.csdn.net/boy7607891xy/article/details/127345758

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯