最近使用了docker容器来构建项目,这种方式虽然极大的加快了构建的项目速度,但是也会对之前的本地开发带来一些挑战,比如今天讲到的调试程序,大家对于xdebug一定不会陌生,但是如果php-fpm放到了容器里面,又该如何进行远程debug呢,今天就来解决这个问题。

前提准备

1.为现有的php环境安装好xdebug扩展,安装成功之后可以通过页面输出phpinfo()查看是否安装成功xdebug。

2.安装能够进行调试的ieda环境,一般对于php程序开发者来说,使用phpStorm较多,本文也是通过这个讲述。

3. 成熟的docker构建的环境。

开始配置

在容器中配置好xdebug支持,这个取决于php的版本,有的版本有单独的xdebug.ini配置文件,有的需要在php.ini的结尾添加以下信息:

;开启xdebug支持远程调试xdebug.remote_enable=1;远程调试的主机,一般都是docker宿主机器,本地调试就是本机,ip可以通过`docker inspect 容器名获得`xdebug.remote_host=172.23.0.1;远程调试机器的端口,一般是9000,和后面讲到的phpStorm里面保持一致xdebug.remote_port=9000;idekey 对接调试的密钥,和后面phpStorm里面的务必保持一致xdebug.idekey=PHPSTORM;自动触发调试,可以将这个值设为1;xdebug.remote_autostart=1;更多参数介绍请参见这里 https://xdebug.org/docs/all_settingsxdebug.remote_connect_back=1xdebug.remote_handler=dbgpxdebug.max_nesting_level=250xdebug.remote_log='/var/www/xdebug_logs/xdebug_docker.log'

重启容器

docker restart 容器名称

配置phpStorm

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

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

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

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

4.再弹出框的左上角点击+号,增加一个

PHP Remote Debug应用,选择刚刚上面创建的server(remoteDebug),

然后Session id为PHPSTORM,和上面xdebug里面的保持一致。然后点击右下角Apply和OK。

5.倒数第二步,开启xdebug监听,先点击电话,然后点击甲壳虫,直到显示为下面这个状态

开始debug

最后打开浏览器访问网站,phpStorm自动断点。

更多精彩,欢迎关注本头条号或者公众号:编程社

程序员日常进阶宝典

docker容器的标准使用过程_phpStorm中使用xdebug工具调试docker容器中的程序相关推荐

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

    改方法是调试drush所执行的php代码的方法,同样适用于普通的cli方式运行的php程序的调试. 1.首先需要调整cli方式的xdebug.ini配置: sudo vi /etc/php5/cli/ ...

  2. java的调试页面_[Java教程]使用开发者工具调试jsp页面中的脚本

    [Java教程]使用开发者工具调试jsp页面中的脚本 0 2016-04-21 23:00:07 只举例火狐和谷歌.如果是火狐,一般是用firebug,首先确保开启脚本调试: 然后刷新一下要调试的页面 ...

  3. docker容器的标准使用过程_跟我一起学docker(四)--容器的基本操作

    1 .创建容器 Docker的容器十分轻量级,用户可以随时创建或删除容器. 新建容器:docker create Example:docker create –ti ubuntu 说明:使用docke ...

  4. docker容器的标准使用过程_docker容器的使用

    首先我们看下我们本地的镜像. docker images 只有一个busybox镜像,如果我们想要一个ubuntu镜像,通过ubuntu来启动一个容器,那么我们需要一个ubuntu镜像,但是我们本地并 ...

  5. Java中的数字工具类-----持续总结中

    标题 java获取任意数字的个位,十位,百位,千位,万位... JAVA实现数值跟人民币大写(中文简体.繁体)互转 Java实现数值金额指定分割符 java代码去除千分号 BigDecimal判空处理 ...

  6. 使用开发者工具调试jsp页面中的脚本

    只举例火狐和谷歌.如果是火狐,一般是用firebug,首先确保开启脚本调试: 然后刷新一下要调试的页面,点击firebug中的行内,选择当前页面: js文件一般直接显示的是js文件的名字,而页面一般是 ...

  7. 【Docker安装部署FastDFS详细过程】

    0.国人之光~FastDFS 分布式文件存储的由来: 在我们的项目中有很多需要存储的内容出现,比如图片,视频,文件等等,在早期的时候用户量不大,产生的文件也不是很多,这时我们可以把文件和服务程序放在一 ...

  8. 如何在搜狗浏览器中添加扩展工具

    如何在搜狗浏览器中添加扩展工具?搜狗浏览器是一款比较好用的浏览器.我们在浏览网页的时候,需要添加一些外部的插件,具体该怎么添加呢?下面就是在搜狗浏览器中添加扩展工具的方法,一起了解一下. 1.打开搜狗 ...

  9. rackspace_在由30个Rackspace云服务器组成的单个编织群集中运行2,000个Docker容器,每个服务器具有2GB内存...

    rackspace 这是有关使用Weave作为底层网络层的DCHQ平台可伸缩性的2博客系列文章的第二篇博客. 第一个博客介绍了在10个Weave群集上部署10,000个容器的情况,每个群集在Racks ...

最新文章

  1. 【pytorch】pytorch-backward()的理解
  2. 操作系统经典书籍--现代操作系统
  3. php+摩尔斯电码,PHP摩尔斯电码转换器
  4. linux用户权限简介,Linux用户及权限管理
  5. 网页设计表格单元格线条及边框设置
  6. C# 面向对象程序设计复习
  7. backup archivelog delete input 与delete all input 区别
  8. sqlplus下无法shutdown情况下不妨试试crsctl stop crs
  9. 嘉兴学院c语言期末考试题库,液压与气压传动(嘉兴学院)知到APP答案
  10. iOS篇—plist文件
  11. Java多线程并发笔记01 对象锁 类锁 对象锁的同步和异步 脏读
  12. 涉密计算机信息系统的安全审计,涉密计算机信息系统安全审计.doc
  13. Transflow:Quake 是如何构建以 DSL 为核心的低代码系统?
  14. 如何在局域网内让自己电脑的文件被其他电脑访问
  15. python随机森林特征重要性原理_使用Python的随机森林特征重要性图表
  16. 达梦mpp相当于oracle什么,DM7 达梦数据库 大规模并行处理 MPP (1) -- 基本概念和原理...
  17. 规定时间间隔刷新UI
  18. 线性回归-多元线性回归
  19. 八人抢答器讲解_八人抢答器
  20. 怎么对10亿个电话号码进行去重

热门文章

  1. GG and MM(every sg 游戏)
  2. Codeforces Round #632 (Div. 2) E. Road to 1600 构造好题
  3. Double Strings
  4. Matlab与高等数学
  5. Matrix(二维hash)
  6. 牛客网【每日一题】5月15日题目 储物点的距离
  7. [HAOI2018] 染色(二项式反演+NTT)
  8. 一二三系列之状压DP——Max Correct Set(一)Neko Rules the Catniverse (Large Version)(二)Make It Ascending(三)
  9. CF464E-The Classic Problem【最短路,主席树】
  10. CF5E-Bindian Signalizing【单调栈】