一文掌握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出现Cannot modify header information问题的解决方法大全
Apr 09 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
php抽奖小程序的实现代码
Jun 18 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
php实现递归的三种基本方式
Jul 04 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 PHP
微信 开发生成带参数的二维码的实例
Nov 23 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
php 截取中英文混合字符串的方法
May 31 PHP
PHP convert_uudecode()函数讲解
Feb 14 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 5.0创建图形的巧妙方法
2010/10/12 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
关于期中考试的反思
2014/02/02 职场文书
谢师宴答谢词
2015/01/05 职场文书
实习推荐信格式模板
2015/03/27 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
质检员工作总结2015
2015/04/25 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android
python双向链表实例详解
2022/05/25 Python
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android