phpStorm中使用xdebug工具调试docker容器中的程序

前提准备

phpstorm开发软件 + dnmp(docker + nginx + mysql +php)

  • 配置好hosts 映射比如 /etc/hosts      127.0.0.1 tp5.dev
  • 为现有的php环境安装好xdebug扩展,安装成功之后可以通过页面输出phpinfo()查看是否安装成功xdebug
  • 安装能够进行调试的ieda环境,一般对于php程序开发者来说,使用phpStorm较多,本文也是通过这个讲述。
  • 成熟的docker构建的环境。 可以使用https://github.com/yeszao/dnmp

配置xdebug

[XDebug]
;开启xdebug支持远程调试
xdebug.remote_enable=1
;远程调试的主机,一般都是docker宿主机器,本地调试就是本机,ip可以通过`docker inspect 容器名获得`
xdebug.remote_host=172.19.0.2
;远程调试机器的端口,一般是9000,和后面讲到的phpStorm里面保持一致
xdebug.remote_port=9000
;idekey 对接调试的密钥,和后面phpStorm里面的务必保持一致
xdebug.idekey=PHPSTORM
;自动触发调试,可以将这个值设为1;
xdebug.remote_autostart=1
;更多参数介绍请参见这里 https://xdebug.org/docs/all_settings
xdebug.remote_connect_back=1
xdebug.remote_handler=dbgp
xdebug.max_nesting_level=250
  • xdebug.remote_host 可以使用 docker inspect 查看php-fpm所在的容器的ip ,如果是mac的话可以使用host.docker.internal
  • xdebug.remote_port 一般跟php-fpm的端口一致就可以了。

配置完记得重启容器 docker restart 容器名称

配置phpStorm

主要包括配置基础debug,配置server,启动debug等几个步骤。

配置xdebug的基础信息

打开setting->debug里面做如下配置,9000表示启动的端口,和上面的xdebug里面的保持一致。

再setting->server中做如下配置,下面的Use path mapping一定要勾选配置好,不然可能出现控制台能够看到调试,但是phpStorm断点拦截不到的情况。

一定要配置好use path mapping 映射本地目录和远程目录的对应的关系。

配置和启动一个xdebug程序,编辑配置。

再弹出框的左上角点击+号,增加一个PHP Remote Debug应用,选择刚刚上面创建的server(remoteDebug),然后Session id为PHPSTORM,和上面xdebug里面的保持一致。然后点击右下角Apply和OK。

最后把这个红色的×去掉。

参考文章:

原文地址:https://www.cnblogs.com/tl542475736/p/11370416.html

时间: 2024-08-02 10:47:18

phpStorm中使用xdebug工具调试docker容器中的程序的相关文章

在主机中通过xdebug远程调试Vagrant虚拟机中drush脚本的方法

改方法是调试drush所执行的php代码的方法,同样适用于普通的cli方式运行的php程序的调试. 1.首先需要调整cli方式的xdebug.ini配置: sudo vi /etc/php5/cli/conf.d/xdebug.ini [XDebug] zend_extension="/usr/lib/php5/modules/xdebug.so" xdebug.coverage_enable=0 xdebug.default_enable=0 xdebug.remote_enable

【原创】大叔经验分享(71)docker容器中使用jvm工具

java应用中经常需要用到jvm工具来进行一些操作,如果java应用部署在docker容器中,如何使用jvm工具? 首先要看使用的docker镜像, 比如常用的openjdk镜像分为jdk和jre,只有jdk版本才有jvm工具,所以可以直接使用jdk版本的openjdk: 比如常用的tomcat镜像则没有jdk和jre选择,默认使用都是jre,所以没有jvm工具,tomcat镜像中的jdk目录如下: # ls /usr/lib/jvm/java-1.8-openjdk bin jre lib #

使用burpsuite等代理工具抓取docker容器中的数据包

使用burpsuite等代理工具抓取docker容器中的数据包,下面是详细的教程. 以docker中的某个漏洞平台(bwapp)为例,展示如何抓包. 1.首先使用docker下载bwapp: # docker pull raesene/bwapp 2.然后运行bwapp (使用命令   --env HTTP_PROXY="http://192.168.43.14:8080"   来进行代理设置,这里设置的是burpsuite中的ip地址以及端口) # docker run -d --n

Docker容器中运行ASP.NET Core

在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了.那么我就来翻译一下这篇文章,让更多的中文读者看到.当然Scott遇到的坑我也遇到了. 不过首先,对于不熟悉的朋友我还是来解释一下Linux容器和Windows容器的概念. 由于容器成为虚拟化和应用托管的一种不可避免的选项,Windows也开始为公众提供容器功能(其实微软具备和使用容器技术很久了).这

在Docker容器中部署Web应用

本文直接讲解如何在Docker容器中实战部署一个Web应用程序,关于Docker相关的概念和如何安装Docker请参考相关资料完成. 第一步:工具准备 演示如何在Docker容器中部署一个Java Web应用程序,需要准备的软件工具包括:jre,tomcat和webapp应用.另外,为了实现在容器启动时自动启动webapp,需要编写一个脚本工具完成该工作. 安装jre,请参考:http://www.wikihow.com/Install-Java-on-Linux 安装tomcat,请参考:ht

无需安装 vsftpd , 直接使用 FTP 来管理 docker 容器中的文件

无图无真相,先放个效果图: 背景 使用 docker 来跑一些服务很方便,但是有的时候想管理容器里面的文件却很麻烦 -- 一般常规做法有3种: 通过数据卷或数据卷容器的方式 启动容器的时候时候启动 vsftpd 或者 sshd 等服务,并开启端口映射,然后通过 ftp/sftp 连上去管理 进入容器的终端,通过命令行管理 但是这些做法都有一定的缺陷和不便: 1和2都是需要在启动容器的时候做一些配置,如果容器已经启动了就歇菜了.而且2需要额外的端口映射,占用主机的端口.3的做法比较 geek ,而

[docker] 管理docker容器中的数据

之前我们介绍了Docker的基本概念(前面的没翻译...),了解了如何使用Docker镜像进行工作,并且学习了网 络和容器之间的链接.这一节我们将讨论如何管理容器中及容器之间的数据. 我们将查看下面两种管理Docker中数据的主要方法. 数据卷 数据卷容器 数据卷 一个数据卷就是经过特殊设计的,在一个或多个容器中通过UFS文件系统提供的一些特性 实现数据持久化或共享. 数据卷可以在容器之间共享和重复利用 可以对数据卷里的内容直接进行修改 对镜像的更新不会改变数据卷的内容 卷会一直持续到没有容器使

将maven项目打包在docker容器中的运行过程

maven项目打包在docker容器中的运行过程 第一步:将springboot项目打包成jar包 第二步:将jar拷贝到虚拟机中,利用xftp工具将jar包拷贝到虚拟机中 第三步:docker pull java拉取java镜像 第四步:编写dockerfile文件 第五步:构建镜像 第六步:基于镜像运行容器 原文地址:https://www.cnblogs.com/jasonboren/p/12272347.html

在docker容器中运行hello world!

在docker容器中运行hello world! docker容器可以理解为在沙盒中运行的进程.这个沙盒包含了该进程运行所必须的资源,包括文件系统.系统类库.shell 环境等等.但这个沙盒默认是不会运行任何程序的.你需要在沙盒中运行一个进程来启动某一个容器.这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止. 目标: 在我们刚刚下载的镜像中输出"hello word".为了达到这个目的,我们需要在这个容器中运行"echo"命令,输出"