前提准备

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。

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

参考文章:

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

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

    java应用中经常需要用到jvm工具来进行一些操作,如果java应用部署在docker容器中,如何使用jvm工具? 首先要看使用的docker镜像, 比如常用的openjdk镜像分为jdk和jre,只 ...

  2. Docker容器中运行ASP.NET Core

    在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...

  3. PhpStorm使用之 —— Xdebug断点调试

    PhpStorm使用之 -- Xdebug断点调试 在<XAMPP的配置与使用>中已经阐述了Xdebug插件的配置,Xdebug配置完成后,只需要在IDE工具中进行相关设置,便可启动Xde ...

  4. Docker容器中开始.NETCore之路

    一.引言 开始写这篇博客前,已经尝试练习过好多次Docker环境安装,.Net Core环境安装了,在这里替腾讯云做一个推广,假如我们想学习.练手.net core 或是Docker却苦于没有开发环境 ...

  5. Docker容器中开始.Net Core之路

    开始写这篇博客前,已经尝试练习过好多次Docker环境安装,.Net Core环境安装了,在这里替腾讯云做一个推广,假如我们想学习.练手.net core 或是Docker却苦于没有开发环境,服务器也 ...

  6. nsenter工具进入docker容器

    对于运行在后台的Docker容器,我们经常需要做的事情是进入到容器中,docker为我们提供了docker exec .docker attach 命令,并且还提供了nsenter工具,外部工具供我们 ...

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

    无图无真相,先放个效果图:     背景 使用 docker 来跑一些服务很方便,但是有的时候想管理容器里面的文件却很麻烦 -- 一般常规做法有3种: 通过数据卷或数据卷容器的方式 启动容器的时候时候 ...

  8. Docker 容器中相关软件安装

    Docker 容器中相关软件安装 1.介绍 我们从docker hub下载的centos镜像是只有很少的命令,需要单独安装我们所需的相关软件. 2.安装软件 安装yum-utils软件包 该软件包是辅 ...

  9. Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro

    Docker容器中运行ES,Kibana,Cerebro和Logstash安装与数据导入ES 想加强ES有关的知识,看了阮一鸣老师讲的<Elasticsearch核心技术与实战>收获很大, ...

随机推荐

  1. Django之logging配置

    1. settings.py文件 做开发离不开必定离不开日志, 以下是我在工作中写Django项目常用的logging配置. # 日志配置 BASE_LOG_DIR = os.path.join(BA ...

  2. D3学习之坐标系绘制

    坐标轴的绘制我们需要搞清楚以下三个要点: 1).axis函数 2)..call()函数用于组合 3).坐标轴的平移旋转 关于第三点其实就是"transform","tra ...

  3. 解决 ThinkPHP 5 把控制器下的文件夹当做控制器输出的问题

    目录结构: application/home/controller/user_info/User.php 输入路由:/home/user_info/user/index 看样子没毛病,但会报错: 这是 ...

  4. Linux第三阶段题型测试

    1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求使用命令取得644或0644这样的数字. 解答: 1)最土的方法:ls -l /etiantian |cu ...

  5. memcached命令行、Memcached数据导出和导入

    1.memcached命令行 telnet 127.0.0.1 11211set key2 0 30 2abSTOREDget key2VALUE key2 0 2abEND  如: set key3 ...

  6. 小记--------spark的Master的Application注册机制源码分析及Master的注册机制原理分析

    原理图解: Master类位置所在:spark-core_2.11-2.1.0.jar的org.apache.spark.deploy.master下的Master类   //截取了部分代码 //处理 ...

  7. crontab中的%

    crontab中的%是换行的意思,在使用时需要使用\做转义. ----------------- 在用crontab执行一段定时任务时,想要把数据输出到一个日期命名的文件中 * * * * * cd ...

  8. URI解析

    这里主要参考 RFC3986 文档. URI可以分为URL,URN或同时具备locators 和names特性的一个东西.URN作用就好像一个人的名字,URL就像一个人的地址.换句话说:URN确定了东 ...

  9. Elastic Search的聚合搜索

    就是使用ES提供的aggs语法结果,使用DSL搜索的语法,实现聚合数据的统计,查询.ES中,如果新增document数据的时候,对应的index和type不存在,则自动创建. 1 准备源数据 PUT ...

  10. 经验:什么影响了数据库查询速度、什么影响了MySQL性能 (转)

    一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定 ...