一文掌握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系统上安装PHP运行环境文字教程
Jul 19 PHP
从康盛产品(discuz)提取出来的模板类
Jun 28 PHP
初品cakephp 入门基础
Feb 16 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
PHP实现无限极分类图文教程
Nov 25 PHP
php检查页面是否被百度收录
Oct 28 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
微信支付开发动态链接Native支付
Jul 12 PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 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
把77A收信机改造成收音机
2021/03/02 无线电
PHP实现多条件查询实例代码
2010/07/17 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
jquery 输入框数字限制插件
2009/11/10 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
预加载css或javascript的js代码
2010/04/23 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
python中urllib模块用法实例详解
2014/11/19 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
python定时任务 sched模块用法实例
2019/11/04 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
如何用PHP实现邮件发送
2012/12/26 面试题
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
机电工程学生自荐信范文
2013/12/07 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
小学庆六一活动总结
2014/08/28 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
毕业证明模板
2015/06/19 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书