一文掌握PHP Xdebug 本地与远程调试(小结)


Posted in PHP onApril 23, 2019

很久没写PHP了、同样很很久没有用XDebug了,近期有个简单的场景要用到,简单记录一下关键步骤。

本地调试

本地环境:

$ php -v
PHP 7.3.4 (cli) (built: Apr 8 2019 10:21:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
  with Zend OPcache v7.3.4, Copyright (c) 1999-2018, by Zend Technologies
  with Xdebug v2.7.1, Copyright (c) 2002-2019, by Derick Rethans

环境搭建

// 安装xdebug
$ pecl install xdebug
// 配置xdebug
$ vim /usr/local/etc/php/7.3/conf.d/ext-xdebug.ini
[xdebug]
 zend_extension="xdebug.so"
 xdebug.remote_enable=On
 xdebug.remote_port=9001
 xdebug.idekey=PHPSTORM
 xdebug.remote_connect_back = 1
// 重启php服务
$ brew services restart php@7.3

IDE 配置

我是在~/Downloads/xdebug/ 目录下放了一个简单的PHP文件test.php来测试,在这个目录下用php -S 127.0.0.1:7790起了个http服务,可参考进行下述配置。

IDEA的几个配置项

一文掌握PHP Xdebug 本地与远程调试(小结)

一文掌握PHP Xdebug 本地与远程调试(小结)

一文掌握PHP Xdebug 本地与远程调试(小结)

开启监听

一文掌握PHP Xdebug 本地与远程调试(小结)

效果演示

设置之后, 在IDE里打上断点, 在浏览器打开这个链接即可开启测试

http://127.0.0.1:7790/test.php?XDEBUG_SESSION_START=PHPSTORM

效果如下:

一文掌握PHP Xdebug 本地与远程调试(小结)

浏览器没有必要安装 Xdebug Helper 插件。

远程调试

与上一篇联动, 本篇是远程调试, 主要记录一下过程

本地环境:

# php -v
PHP 7.2.16 (cli) (built: Mar 10 2019 21:22:49) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
  with Xdebug v2.8.0-dev, Copyright (c) 2002-2019, by Derick Rethans

环境搭建

// 如果没有安装过需要先行安装
# yum install -y php-devel gcc

// 安装xdebug
# cd /usr/local/src
# git clone https://github.com/xdebug/xdebug.git
# cd xdebug
# ./rebuild.sh
// xdebug配置文件
# vim /etc/php.d/xdebug.ini

zend_extension=xdebug.so
xdebug.remote_enable=On
xdebug.remote_port=11955
xdebug.idekey=PHPSTORM
// 重启PHP服务
# systemctl restart php-fpm
# systemctl status php-fpm

然后重点来了,一定不要忘记开放上面配置的xdebug.remote_port端口号,开放此端口号、开放此端口号、开放此端口号。

开放端口每个系统都不太一样,在CentOS7中可以使用firewall-cmd来操作

# firewall-cmd --zone=public --add-port=11955/tcp --permanent
# firewall-cmd --reload

IDE 配置

IDE的配置与本地调试不太一样,总的来说有两种方式,一种是通过在IDE配置Remote Debug, 需要配置登录远端服务器;一种是通过ssh来做远程端口转发到本地来实现类似本地调试的方式。
在这里,我选用了后一种方式来操作。

远程端口转发

// HOST 为远程服务器在~/.ssh/config的配置host名, 可以替换为你的 比如 root@1.1.1.1
ssh -NT -R 11955:127.0.0.1:9001 HOST

这样就实现了远程xdebug端口11955到本地9001的映射。

IDE配置

与本地调试的配置不一样的地方就是host和port,其他地方大同小异。

IDEA-PHP-Servers的配置:

host 为远程web服务的域名, port 为远程web提供服务的端口号。

同时需要注意的是:需要勾选 path mappings, 并正确配置要debug的工程目录在远程和本地两个环境的映射关系。

一文掌握PHP Xdebug 本地与远程调试(小结)

IDEA-PHP-XDebug-DBGp-Proxy的配置:

更改hostport为远程web服务配置,与上一步相同

一文掌握PHP Xdebug 本地与远程调试(小结)

效果演示

设置之后, 在IDE里打上断点, 在浏览器打开这个链接即可开启测试

http://example.com/test.php?XDEBUG_SESSION_START=PHPSTORM

效果如下:

一文掌握PHP Xdebug 本地与远程调试(小结)

同样的,浏览器没有必要安装 Xdebug Helper 插件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP中的integer类型使用分析
Jul 27 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
一个PHP分页类的代码
May 18 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
怎样使用php与jquery设置和读取cookies
Aug 08 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 PHP
完整删除ecshop中获取店铺信息的API
Dec 24 PHP
分享一个Laravel好用的Cache宏
Mar 02 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
Windows2003下php5.4安装配置教程(IIS)
Jun 30 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
Apr 23 #PHP
PHP信号处理机制的操作代码讲解
Apr 19 #PHP
CentOS7编译安装php7.1的教程详解
Apr 18 #PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 #PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
Apr 17 #PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 #PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 #PHP
You might like
php中大括号作用介绍
2012/03/22 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
php读取3389的脚本
2014/05/06 PHP
php字符串过滤与替换小结
2015/01/26 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
js计算页面刷新的次数
2009/07/20 Javascript
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
python中的列表和元组区别分析
2020/12/30 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
应聘护士自荐信
2013/10/21 职场文书
党员创先争优活动总结
2014/05/04 职场文书
2015年母亲节寄语
2015/03/23 职场文书
介绍信范文大全
2015/05/07 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL