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 相关文章推荐
php正则校验用户名介绍
Jul 19 PHP
PHP nl2br函数 将换行字符转成 <br>
Aug 21 PHP
Php 构造函数construct的前下划线是双的_
Dec 08 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
Jun 08 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
Dec 10 PHP
php parse_str() 函数的定义和用法
May 23 PHP
php中序列化与反序列化详解
Feb 13 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
Apr 11 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
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
PHP 实现重载
2021/03/09 PHP
javascript使用call调用微信API
2014/12/15 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
解决layui的input独占一行的问题
2019/09/10 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python删除服务器文件代码示例
2018/02/09 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
Flask之flask-script模块使用
2018/07/26 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
Python如何读写字节数据
2020/08/05 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
美国家具网站:Cymax
2016/09/17 全球购物
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
事业单位请假制度
2014/01/13 职场文书
眼镜促销方案
2014/03/15 职场文书
继承权公证书范本
2015/01/23 职场文书
销售合作意向书范本
2015/05/08 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python