Yii2下PHP远程调试PHP5.6/7.2与Xdebug2.5/2.7/3.0 在PHPSTORM下的差异化表现

学习起因:新人学YII2不知道远程调试(远程调试和控制台调试是两件事,同一个原理)

因为yii2框架,设计复杂度非常高,加上php代码的弱类型语言结构,在代码非常复杂的情况下,不采用调试的方式来看源码调用栈,几乎是灾难性的,所以我们必须解决phpstorm下的远程调试问题。

远程调试原理图:

涉及技术:

docker下安装php,xdebug的远程配置,phpstorm的远程配置

为何没选用php5.6版本演示调试:

因公司的php代码采用的是php5.6版本,又加上公司的代码的数据库,es等很多模块无法在本地进行直接连接,这些问题,造成没有现成的yii2 5.6版本可供调试,我手头的yii2全部都是基于php7.2的,所以后期可能要降级处理一下,给一个案例yii2 5.6版本,但是理论上php5.6版本和php7.2版本除了xdebug的配置有所不同外,其他流程应该毫无差别:

xdebug 不同版本配置差别:

  1. xdebug3.0以下版本(php5.6采用的必须是xdebug2.5版本,这个要手动安装,下面会给出详细安装方式)

[xdebug]

zend_extension=xdebug.so

xdebug.remote_enable=1

xdebug.remote_host=docker.for.mac.host.internal

xdebug.remote_port=9000

  1. xdebug3.0以上

[xdebug]

zend_extension=xdebug.so

xdebug.mode=develop, debug

xdebug.client_port=9003 #也可以是9000 这个随意配置 保证phpstorm监听这个端口即可

xdebug.client_host=docker.for.mac.host.internal #docker容器访问宿主机host

xdebug.trace_output_dir=/tmp/xdebug #可以删除,跟踪日志也没有必要加上

xdebug.profiler_output_dir = /tmp/xdebug #可以删除,profiler是个分析器会

#产生大量的分析日志垃圾,不会清理的,尽可能别开启

xdebug.profiler_enable = On #可以删除

xdebug.profiler_enable_trigger = 1 #可以删除

mac m1 如何安装docker 并安装所需要的php环境?

请参考:mac m1 安装docker docker 安装php 5.6 和 7.2 避坑指南_森叶的博客-CSDN博客

我这里的生成docker容器的脚本也分享这里:

docker run -dit --name=php72 --platform linux/amd64 --privileged -p 2022:22 -p 8083:880 -p 9501:9501  -v /Users/senwang/workspace:/home c13a516c5bea /usr/sbin/init

大家这里最好,将8083:880 直接改为80:80 这样就不用输入端口号,就不用被端口号影响思路了,但80端口经常被各种服务直接占用,记得要先干掉其他占用的80端口的服务,9000端口也经常被占用哦!

docker run -dit  --platform linux/amd64 --privileged  -p 2022:22 -p 8083:80 -p 9505:9501 --name=php72 -v /Users/senwang/workspace:/home 8ef27e80b336 /usr/sbin/init

这里以php7.2为例子讲解:xdebug在lnmp时默认安装即可,默认安装的xdebug3.0版本了

如果是php5.6,参考安装教程,lnmp已经无法自动帮助php5.6安装xdebug了,所以要自己手动进行编译安装xdebug2.5.4

下载xdebug2.5.4源码链接:GitHub - xdebug/xdebug at xdebug_2_7直接下载zpi包,这样就不用切git 分支了

装完之后到php.d修改配置文件:

cd /usr/local/php/etc/php.d/

vim 08-xdebug.ini #添加下面的配置文件

[xdebug]

zend_extension=xdebug.so

xdebug.remote_enable=1

xdebug.remote_host=docker.for.mac.host.internal

xdebug.remote_port=9000

phpstorm怎么配置:

这个配置好后,还要宿主机hosts设置一下:sudo vim /etc/hosts

这样你在浏览器中访问该域名时,就会直接访问本机了,加上8083,就会自动转发到容器里面去了。

phpstorm中代码库的顶部要加上这样一个cookie

没这个cookie不能直接触发远程监听,有了这个cookie,phpstorm才知道这个请求是要调试的

一切就绪,找到具体路径打个断点:就可以愉快的调试了

补充cli环境调试:

刚才提到cli控制台调试,所谓控制台,就是不通过访问url来触发,而是手动右键debug的方式,这时要配置php远程解释器:

额外配置参数:

#xdebug3.0配置

-dxdebug.client_host=docker.for.mac.host.internal

#xdebug3.0以下配置

-dxdebug.remote_host=docker.for.mac.host.internal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值