我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

在 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

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

深入理解Python虚拟机中调试器实现原理与源码分析

本文主要给大家介绍python中调试器的实现原理,通过了解一个语言的调试器的实现原理我们可以更加深入的理解整个语言的运行机制,可以帮助我们更好的理解程序的执行,感兴趣的可以了解一下
2023-05-17

如何实现Windows宿主系统和虚拟机ubuntu系统文件互相访问

今天就跟大家聊聊有关如何实现Windows宿主系统和虚拟机ubuntu系统文件互相访问,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。我的宿主操作系统是Windows 10,使用Ora
2023-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录