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

news2024/11/24 17:24:50

学习起因:新人学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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MPLS 虚拟专线 实验

目录 1.拓扑图 2.实验思路 3.主要配置 4.测试 5.实验总结 1.拓扑图 2.实验思路 IGP路由 MPLS Domain 配置MPLS VPN PE之间的MP-BGP邻居关系 CE端与PE端的路由交换 双向重发布,实现路由共享 3.主要配置 R6: *公网环境: [r6]ospf 1 r…

记录robosense RS-LIDAR-16使用过程2

一、安装并使用可视化工具RSView,官网提供了不同版本的安装包,根据个人环境下载解压。本人ubuntu18系统,修改权限:chmod ax run_rsview.sh;然后运行:./run_rsview.sh。该软件每次启动时都要运行./run_rsviewer.sh该软件…

Acwing 1214. 波动数列

题目链接&#xff1a;1214. 波动数列 - AcWing题库 标签&#xff1a;动态规划 &#xff08;字好丑...&#xff09; AC代码&#xff1a; #include<iostream> using namespace std;int f[1005][1005];const int MOD 100000007;//返回正余数 int get_mod(int a,int b) {…

不重复的随机数问题

前言 对于随机数的运用&#xff0c;在开发中经常会用到。有时需要生成不重复的定范围定总量的随机数&#xff0c;比如1~20&#xff0c;需要打乱的1~20中的10个数&#xff0c;那到底怎么做呢? 一、不重复的随机数 我们知道&#xff0c;直接用random会有重复的数字&#xff0…

电商物流云仓的原理是什么?

以云的速度和范围获得胜利  这是一个快速转型时期&#xff0c;封锁、就地避难订单和游览限制扰乱了美国经济的各个范畴&#xff0c;对供给链运营产生了严重影响。在如此动乱的时期&#xff0c;企业正越来越多地转向云优先战略&#xff0c;以使其供给链愈加矫捷和灵敏。  战…

【NI Multisim 14.0原理图文件管理——保存/备份文件及新建电路图页文件】

目录 序言 ⛄1.保存文件 ⛄2.备份文件 ⛄3.新建电路图页文件 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设计者方便、快捷地使用虚拟元器件和仪器、仪表进行电路设计和仿真。 首先启动NI Multisim 14.0&#xff0c;打开如图所示的启动界面&#xff…

CTK Plugin Framework插件框架学习--事件监听

文章目录一、前言二、框架事件三、插件事件四、服务事件五、添加事件监听一、前言 CTK一共有三种事件可以监听&#xff1a; 框架事件插件事件服务事件 但是这些事件只有在变化时才能监听到&#xff0c;如果已经变化过后&#xff0c;进入一个稳定的状态&#xff0c;这时才去监…

归并排序详细说明及实现-python

算法思想&#xff1a; 设初始序列含有n个记录&#xff0c;则可看成n个有序的子序列&#xff0c;每个子序列长度为1 两两合并&#xff0c;得到&#xff08;n//2) 个长度为2&#xff08;n为奇数时&#xff0c;最后一个序列的长度为1&#xff09;的有序子序列 再两两合并&#xff…

【Flink系列】开发篇:1. Flink维表关联方案

数据流往往需要访问外部的数据源来丰富自己的信息&#xff0c;比如通过record中的ip地址查询ip数据库maxmind的GeoIP2 Databases得到ip对应的城市名称&#xff0c;城市经纬度&#xff0c;将这些作为新的字段添加到原来的record中。这就涉及到本篇的主题&#xff1a;维表关联。 …

分布式锁方案分析:看图说话(图+文)

1 缘起 曾经在看分布式锁的时候&#xff0c;还是处于了解阶段&#xff0c; 回头总结时&#xff0c;发现有很多细节没有探究到&#xff0c; 本文以-看图说话的方式分析不同的分布式锁方案&#xff0c; 分布式锁需要保证&#xff1a; &#xff08;1&#xff09;互斥性&#xff1…

【从零开始学习深度学习】46. 目标检测中锚框的概念、计算方法、样本锚框标注方式及如何选取预测边界框

本文主要介绍目标检测中常用到的锚框相关概念、计算方式、样本标注及如何选取预测边界框并输出的相关内容。 目录1. 锚框介绍1.1 生成多个锚框2. 交并比--Jaccard系数3. 标注训练集的锚框4. 输出预测边界框---非极大值抑制方法总结1. 锚框介绍 在目标检测算法中通常会在输入图…

Linux常用命令——xhost命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) xhost 制哪些X客户端能够在X服务器上显示 补充说明 xhost命令是X服务器的访问控制工具&#xff0c;用来控制哪些X客户端能够在X服务器上显示。该命令必须从有显示连接的机器上运行。可以通过使用-host参数&…

​Topaz Photo AI 人工智能图像降噪锐化放大

Topaz Photo AI 是一款强大的基于人工智能技术的降噪、锐化及放大的工具。它不仅可以作为独立的软件使用&#xff0c;也可作为 Photoshop 的插件&#xff0c;以及能在 Lightroom Classic、Capture One 中调用。在 Lightroom Classic 中提供了两种工作流程&#xff0c;一种是直接…

while和do while的用法区别

前言在上一篇文章中&#xff0c;壹哥给大家讲解了循环的概念&#xff0c;并重点给大家讲解了for循环的使用。但在Java中&#xff0c;除了for循环之外&#xff0c;还有while、do-while、foreach等循环形式。今天小千就再用一篇文章&#xff0c;给大家讲解while循环的使用。本文带…

webshell 一句话木马

Webshell&#xff08;大马&#xff09;&#xff1a;webshell就是以asp、aspx、php、jsp或者cgi等网页形式存在的一种命令执行环境&#xff0c;也将其称为一种网页后门。黑客入侵一个网站后&#xff0c;通常会将 asp、aspx、php 或 jsp 后门文件与网站 web 服务器目录下正常的网…

基础算法(三)——二分查找

二分查找 介绍 一种复杂度为O(logn)O(logn)O(logn)级别的查找算法&#xff0c;需要被查找的数列具有某种单调性质&#xff0c;其本质其实是搜索一个符合check条件的区间。 二分分为两种&#xff1a; 整数二分浮点数二分 核心思想&#xff1a; 首先讨论整数二分&#xff1…

Django搭建个人博客Blog-Day02

配置文件的介绍&#xff1a;dev.py&#xff08;原来的setting.py文件&#xff09;# django的配置文件中的配置项是什么意思&#xff1f; import os # 导入模块# Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR os.path.dirname(os.path.d…

测牛学堂:软件测试学习之python调试和判断嵌套

python中调试代码 在python中&#xff0c;使用debug来调试代码。 我们使用debug的目的&#xff0c;就是可以查看代码的执行过程。 步骤&#xff1a; 1 打断点。打断点是开发的术语&#xff0c;类似于打标记&#xff0c;debug会让程序在你打断点的地方停止执行。 如果要查看代码…

RabbitMQ(六)消息应答和持久化

目录一、RabbitMQ 消息应答二、RabbitMQ 持久化1.交换机的持久化2.队列的持久化3.消息的持久化4.持久化问题官网地址&#xff1a;https://www.rabbitmq.com/ 下载地址&#xff1a;https://www.rabbitmq.com/download.html 一、RabbitMQ 消息应答 ​ 执行一个任务可能需要花费…

petitlyrics 歌词提取 有感

想做一下歌曲的时间轴&#xff0c;搜歌词搜到了这个网站。奇怪的是看前端代码和network监听请求都不能获得完整歌词。如 https://petitlyrics.com/lyrics/934773a. 歌词截图如下&#xff1a;b. 控制台查看前端代码只有部分歌词c. Network查看请求数据&#xff0c;发现是日语对应…