一文掌握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+MySQL投票系统的设计和实现分享
Sep 23 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
PHP读取文件内容后清空文件示例代码
Mar 18 PHP
CI框架中zip类应用示例
Jun 17 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
Dec 25 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
Mar 22 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
Dec 04 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
PHP面向对象编程快速入门
2006/10/09 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
js模仿jquery的写法示例代码
2013/06/16 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python多线程抓取天涯帖子内容示例
2014/04/03 Python
值得收藏的10道python 面试题
2019/04/15 Python
Python如何计算语句执行时间
2019/11/22 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
监察建议书范文
2014/03/12 职场文书
高中生班主任评语
2014/04/25 职场文书
Python Pandas知识点之缺失值处理详解
2021/05/11 Python