PhpStorm调试docker容器中的php项目

背景

已经通过docker容器启动了一个web服务,并在宿主机可以访问http://localhost:8080访问网页。
现在想使用phpstorm打断点调试代码。

方法

1. 容器内安装xdebug

进入容器

docker exec -it <container-name> bash

为php安装xdebug拓展

apt install php8.1-xdebug

查一下配置文件的路径,并编辑其内容

php --ini|grep xdebug
# 输出路径信息如下(注意末尾多了个逗号)
# /etc/php/8.1/cli/conf.d/20-xdebug.ini,

编辑xdebug配置文件vim /etc/php/8.1/cli/conf.d/20-xdebug.ini,并输入必要的配置项:

zend_extension=xdebug.soxdebug.mode=debug
xdebug.start_with_request=yesxdebug.client_host = host.docker.internal
xdebug.client_port = 9003
xdebug.idekey = "phpstorm"

重启fpm使配置生效

service php8.1-fpm restart

到这里,容器内的web服务已经支持调试了,等着客户端跟它通信。

另外,php文件中可以调用xdebug_info()查看xdebug的配置信息。

2. PhpStorm配置调试环境

2.1 配置php解释器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击确定后,选中这个解释器,并保存设置。

2.2. 配置被调试代码所在的服务器

在这里插入图片描述

2.3 开始调试

在这里插入图片描述
随后点击调试按钮(小瓢虫)即可监听调试。打个断点,发个请求试试。

3. 效果

在这里插入图片描述

4. 原理

xdebug的工作流程:客户端使用浏览器通过80端口访问服务端,服务端因为开启了xdebug所以根据配置,将调试信息通过9003端口发送到刚刚配置的docker宿主机地址(docker宿主机就是我们的客户端地址,因为phpstorm运行在windos宿主机上),宿主机上的phpstorm监听到9003端口的响应以后,通过dbpg协议与服务端进行连接,xdebug的每一步进都会响应到phpstorm上,phpstorm在接收到响应后,再通过docker环境里的php解释器,解释请求并显示在我们的编辑界面上。

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

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

相关文章

面试问答总结之ElasticSearch

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;ES中的专有名词与mysql对应一下&#x1f415;1.你了解ES吗&#xff1f;你是如何接触到ES&#xff1f;&#x1f415;2.你了解正向索引和倒排索引吗&#xff1f;&#x1f3…

TypeScript(六) 循环语句

1. TypeScript循环语句 1.1. 简述 有的时候&#xff0c;我们可能需要多次执行同一块代码。一般情况下&#xff0c;语句是按顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。   循环语句允许我们多次执行一个语句或语句组…

C#需要学到什么程度才能做MES系统开发工作?

C#需要学到什么程度才能做MES系统开发工作&#xff1f; 在开始前我分享下我的经历&#xff0c;刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;两年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些C#学习方法和资料&#xff0c;让我不断提升自己&#xff…

GNSS定位技术总结与PPP定位技术

1.统一观测值方程 2.PPP方程构建 站间单差方程如下&#xff1a; 同样的&#xff0c;设计矩阵也更加庞大&#xff1a; 站间单差消除了卫星轨道、卫星钟、电离层、对流层以及卫星端的伪距和载波硬件延迟的影响。但在PPP中&#xff0c;我们无法通过站间单差消除这些影响&#xff…

MySQL安全(二)SQL注入

一、概述&#xff1a; 1、介绍 SQL注入就是指Web应用程序对用户输入数据的合理性没有进行判断&#xff0c;前端传入后端的参数是攻击者可控制的&#xff0c;并且根据参数带入数据库查询&#xff0c;攻击者可以通过构造不同的SQL语句来对数据库进行任意查询。 2、SQL注入的条…

【Lazy ORM 整合druid 实现mysql监控】

Lazy ORM 整合druid 实现mysql监控 JDK 17 Lazy ORM框架地址 up、up欢迎start、issues 当前项目案例地址 框架版本描述spring-boot3.0.7springboot框架wu-framework-web1.2.2-JDK17-SNAPSHOTweb容器Lazy -ORM1.2.2-JDK17-SNAPSHOTORMmysql-connector-j8.0.33mysql驱动druid-…

四、ES集群安全策略设置 X-pack

本文主要是结合ES集群搭建时使用&#xff0c;并且适用于ES7.x以上版本 背景及安全策略方案对比 ES 7.x以下版本默认几乎没有任何安全策略&#xff0c;如果集群IP、端口被暴露&#xff0c;在可访问的情况下任何用户都可以对索引进行管理以及数据的增删改查等&#xff0c;基于此需…

如何使用docker快速安装Plik并实现固定公网地址远程访问

文章目录 推荐1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点…

GitCode|部分项目开源代码

1.EasyKeyboard 基于MFC的简单软键盘&#xff0c;使用vs2017开发 PangCoder / EasyKeyboard GitCode基于Windows平台的软键盘&#xff0c;使用VS2017开发&#xff0c;使用MFC框架https://gitcode.net/qq_36251561/easykeyboard 2.EncoderSimulator 基于WPF应用的编码器模拟工…

Acwing---792. 高精度减法

高精度减法 1.题目2.基本思想3.代码实现4.总结 1.题目 给定两个正整数&#xff08;不含前导 0&#xff09;&#xff0c;计算它们的差&#xff0c;计算结果可能为负数。 输入格式 共两行&#xff0c;每行包含一个整数。 输出格式 共一行&#xff0c;包含所求的差。 数据范围…

数论与图论

数论&#x1f388; 筛质数 最普通的筛法O(nlogn)&#xff1a; void get_primes2(){for(int i2;i<n;i){if(!st[i]) primes[cnt]i;//把素数存起来for(int ji;j<n;ji){//不管是合数还是质数&#xff0c;都用来筛掉后面它的倍数st[j]true;}} } 诶氏筛法 O(nloglogn)&#…

wordpress连接azure MySQL

申请了免费试用Azure mysql&#xff0c;机器名mysql8-wordpress.mysql.database.azure.com&#xff0c;修改wordpress配置 wp-config.php /** Database username */ define( DB_USER, myblog ); /** Database password */ define( DB_PASSWORD, password ); /** Database h…

Qt知识点总结

将枚举类型转换为字符串 这里使用的在网络编程中&#xff0c;获取socket状态并显示的时候&#xff0c;遇到的一个问题 #include <QMetaEnum>// 将枚举类型转换为字符串 QMetaEnum metaEnum QMetaEnum::fromType<QAbstractSocket::SocketState>(); const char *c…

计算机网络之NAT

NAT&#xff08;网络地址转换&#xff0c;Network Address Translation&#xff09;是一种网络技术&#xff0c;用于在一个网络与另一个网络之间重新映射IP地址。NAT最常见的应用是在家庭和小型办公室的路由器中&#xff0c;用于将私有&#xff08;内部&#xff09;IP地址转换为…

CCF-CSP 202312-1 仓库规划(Java、C++、Python)

文章目录 仓库规划问题描述输入格式输出格式样例输入样例输出子任务 满分代码JavaCPython 仓库规划 问题描述 西西艾弗岛上共有 n n n 个仓库, 依次编号为 1 ⋯ n 1 \cdots n 1⋯n 。每个仓库均有一个 m m m 维向量的位置编码, 用来表示仓库间的物流运转关系。 具体来说,…

centos7常用命令之安装插件1

虚拟机VM要卸载&#xff0c;在这记录下&#xff01;&#xff01;&#xff01; 1、关机、重启 init 0 关机 init 6 重启 2、docker 1.启动docker服务 systemctl start docker 2.查看是否docker启动成功 systemctl status docker 3.停止docker服务 systemctl stop docker #查看全…

ID3算法 决策树学习 Python实现

算法流程 输入&#xff1a;约束决策树生长参数&#xff08;最大深度&#xff0c;节点最小样本数&#xff0c;可选&#xff09;&#xff0c;训练集&#xff08;特征值离散或连续&#xff0c;标签离散&#xff09;。 输出&#xff1a;决策树。 过程&#xff1a;每次选择信息增益…

UDS诊断服务介绍之31服务(强控服务)

目录 一、功能描述 二、应用场景 三、31服务控制基本原理: 四、服务请求

全新魅思V20正规视频影视系统源码/APP+H5视频影视源码

全新魅思V20正规视频影视系统源码&#xff0c;APPH5视频影视源码。会员花费三千购入的&#xff0c;具体搭建教程放压缩包了&#xff01; 有兴趣的下载自行研究吧&#xff0c;搭建一共要用到3个域名&#xff0c;可以拿二级域名搭建。

系统学习Python——装饰器:类装饰器-[初探类装饰器和元类]

分类目录&#xff1a;《系统学习Python》总目录 函数装饰器是如此有用&#xff0c;以至于Python2.X和Python3.X都扩展了这一模式&#xff0c;允许装饰器应用于类和函数。简而言之&#xff0c;类装饰器类似于函数装饰器&#xff0c;但它们是在一条class语句的末尾运行&#xff0…