一文掌握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 magic_quotes_gpc的一点认识与分析
Aug 18 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
PHP连接SQLServer2005方法及代码
Dec 26 PHP
PHP常用函数和常见疑难问题解答
Mar 05 PHP
使用PHP导出Redis数据到另一个Redis中的代码
Mar 12 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
Mar 25 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
Mar 16 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 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中的超全局变量
2006/10/09 PHP
php数据库抽象层 PDO
2011/05/07 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
jQuery的强大选择器小结
2009/12/27 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
python单元测试unittest实例详解
2015/05/11 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
pycharm设置注释颜色的方法
2018/05/23 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
python Shapely使用指南详解
2020/02/18 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
资料员的岗位职责
2013/11/20 职场文书
可贵的沉默教学反思
2014/02/06 职场文书
现场活动策划方案
2014/08/22 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
医德医风个人总结
2015/02/28 职场文书
公司捐书倡议书
2015/04/27 职场文书
交通事故责任认定书
2015/08/06 职场文书
《雷雨》教学反思
2016/02/20 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
关于Redis的主从复制及哨兵问题
2022/06/16 Redis