一文掌握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日历程序
Dec 06 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
PHP打开和关闭文件操作函数总结
Nov 18 PHP
smarty模板引擎之配置文件数据和保留数据
Mar 30 PHP
PHP-FPM之Chroot执行环境详解
Aug 03 PHP
Symfony2框架学习笔记之表单用法详解
Mar 18 PHP
PHP实现数组array转换成xml的方法
Jul 19 PHP
PHP实现根据密码长度显示安全条
Jul 04 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
python字符串替换的2种方法
2014/11/30 Python
Python探索之修改Python搜索路径
2017/10/25 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
Python控制Firefox方法总结
2019/06/03 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
pytorch进行上采样的种类实例
2020/02/18 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
手机配件第一品牌:ZAGG
2017/05/28 全球购物
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
社会治安综合治理管理责任书
2014/04/16 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
2014年卫生工作总结
2014/11/27 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
导游词之包公祠
2019/11/25 职场文书