返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >windows + phpstorm + 虚拟机 + yasd 实现 hyperf 调试
  • 839
分享到

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

phpstormidephphyperf调试 2023-09-02 12:09:09 839人浏览 薄情痞子
摘要

在 Swoole 的官方文档中就明确指出了 Swoole 和 Xdebug 不兼容,虽然Xdebug 2.7 ,可用于 Swoole 环境进行断点、现在 Swoole 已经有了yasd,可以改用,毕竟 Swoole 和 Xdebug 存在兼

在 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

--结束END--

本文标题: windows + phpstorm + 虚拟机 + yasd 实现 hyperf 调试

本文链接: https://lsjlt.com/news/390818.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作