Phpstorm+Xdebug断点调试PHP的方法


Posted in PHP onMay 14, 2018

为什么使用断点调试

大家可能会觉得使用var_dump和echo也能调试啊,为什么还要安装Xdebug断点调试呢?

确实是这样。但是var_dump和echo写的代码后面还要删除,而且明确是知道在哪打的,如果发现没有运行到打点的地方,还要修改代码再运行一次。而断点调试,可以在调试过程中动态打断点,逐行查看当前各个变量的值,甚至临时修改变量的值,更方便。建议大家使用Xdebug断点调试。

安装Xdebug

pecl install xdebug

如果是php7以下版本,需要加上版本号:

pecl install xdebug-2.5.5

pecl如果提示找不到该扩展,则使用源码编译。例如:

wget http://pecl.php.net/get/xdebug-2.5.5.tgz \
  && tar xzf xdebug-2.5.5.tgz && cd xdebug-2.5.5/ \
  && phpize \
  && ./configure \
  && make && make install

注:php5.6只能使用2.5及以下版本xdebug。

安装好后需要在php.ini进行配置:

[xdebug]
zend_extension=xdebug.so
xdebug.enable=1
xdebug.remote_enable=1
;如果开启此,将忽略下面的 xdebug.remote_host 的参数
;xdebug.remote_connect_back=1
;自动启动,无需XDEBUG_SESSION_START=1
xdebug.remote_autostart=1 
;宿主机IP
xdebug.remote_host=192.168.36.101 
xdebug.remote_port=19001
xdebug.remote_handler=dbgp

需要注意的是:

1、是zend_extension,不是extension;

2、xdebug.remote_autostart开启后,就不用手动在请求url里加上XDEBUG_SESSION_START=1了,只要Phpstorm开启断点调试就ok了。很方便;

3、remote_host配置的是安装有Phpstorm的机器,这点需要注意。如果php安装的机器和Phpstorm安装的机器是同一台机器,那么地址写127.0.0.1即可。

如果你采用的是docker环境,remote_host写宿主机的IP。

4、xdebug.remote_port端口我写的是19001,那么Phpstorm也需要修改。

配置完成后需要重启php-fpm。

配置Phpstorm

配置也很简单,配置端口即可:

Phpstorm+Xdebug断点调试PHP的方法

接下来就可以断点调试了。开启监听:

Phpstorm+Xdebug断点调试PHP的方法

请求url的时候就会自动捕捉到请求。

注意:

1、不要同时开启多个项目的监听;

2、监听远程代码的时候,如果宿主机和代码所在目录结构一致,会直接监听成功。否则,会提示设置代码映射关系。也可以手动设置:

Phpstorm+Xdebug断点调试PHP的方法

这里因为宿主机是windows,代码在linux里,目录不一致,做了映射。否则断点会失败。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
杏林同学录(五)
Oct 09 PHP
php GD绘制24小时柱状图
Jun 28 PHP
php 生成随机验证码图片代码
Feb 08 PHP
php木马webshell扫描器代码
Jan 25 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
php图片添加水印例子
Jul 20 PHP
PDO操作MySQL的基础教程(推荐)
Aug 18 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
Laravel 登录后清空COOKIE的操作方法
Oct 14 PHP
laravel使用数据库测试注意事项
Apr 10 PHP
Laravel 集成 Geetest验证码的方法
May 14 #PHP
PHP 多任务秒级定时器的实现方法
May 13 #PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 #PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 #PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 #PHP
Laravel框架实现model层的增删改查(CURD)操作示例
May 12 #PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 #PHP
You might like
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
jQuery JSON的解析方式分享
2011/04/05 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
python通过函数属性实现全局变量的方法
2015/05/16 Python
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
改进Django中的表单的简单方法
2015/07/17 Python
python win32 简单操作方法
2017/05/25 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
2014年冬季防火方案
2014/05/21 职场文书
个人先进事迹材料
2014/12/29 职场文书
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android
mysql幻读详解实例以及解决办法
2022/06/16 MySQL