一文掌握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 相关文章推荐
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
克隆一个新项目的快捷方式
Apr 10 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
初识php MVC
Sep 10 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
yii实现model添加默认值的方法(2种方法)
Jan 06 PHP
php中的登陆login实例代码
Jun 20 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
PHP实现字母数字混合验证码功能
Jul 11 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异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
微信小程序 http请求的session管理
2017/06/07 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
node.js操作MongoDB的实例详解
2017/10/11 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
实例详解带参数的 npm script
2019/05/28 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
Python 使用类写装饰器的小技巧
2018/09/30 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
机械工程师求职自我评价
2013/09/23 职场文书
2013年军训通讯稿
2014/02/05 职场文书
员工福利申请报告
2015/05/15 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Python基础学习之奇异的GUI对话框
2021/05/27 Python
js 数组 fill() 填充方法
2021/11/02 Javascript