使用PHPStorm+XDebug搭建单步调试环境


Posted in PHP onNovember 19, 2017

PHP是一个解释执行的语言,一般来说,进行调试的时候,只要通过使用 var_dump 或者 var_export 两个函数,就可以得到PHP中变量的值,达到调试的地步,但是对于大型项目,或者想研究一下别人的代码时,使用单步调试会变得简单的多。就拿目前最流行的 PHP Laravel 框架为例子,使用 PHPStorm 搭建单步调试环境。

PHPStorm安装和基本配置

PHPStorm下载安装

PHPStorm除了体积有些大外,算是PHP IDE中非常强大便捷的开发环境。官网下载地址:https://www.jetbrains.com/phpstorm/

本站下载地址 点击下载

PHPStorm激活

安装之后需要激活,如果经济能力许可,可以购买正版,当然,网上也有很多激活方式。这儿需要提醒的是,如果你激活不了,可是试试在 host 中添加下面这一行 0.0.0.0 account.jetbrains.com

PHPStorm设置字体大小

打开PHPStorm以后,可以在选择菜单 File -> Settings -> Editor -> Colors & Fonts -> Font ,在右边显示的信息栏中设置自己习惯的字体和大小。

PHPStorm导入项目

可以在PHPStorm中选择:File -> Open,直接打开工作文件夹,一般我喜欢把所有的PHP项目放在一个 PHP_Projects 的文件夹下,然后统一打开,便于开发,一面频繁切换工作空间。

PHPStorm标记项目位置

一般情况下,打开的文件夹下面会有很多项目,我们需要标记这些项目,这样能够提供更好的索引和代码之间关联。
菜单选择:File -> Settings -> Directories,然后把每个项目的根目录标记为 Sources。

安装XDebug扩展

下载XDebug扩展

为了调试PHP,我们还需要一个PHP扩展:xDebug,这是一个非常强大的PHP调试扩展,用来最终PHP执行过程,执行堆栈等。xDebug官方下载地址:https://xdebug.org/,点击每个版本说明中的 download 连接即可进入下载页面,注意这儿需要选择适合自己系统版本和PHP版本的xdebug扩展。

配置xdebug扩展

下载之后解压缩,里面包含一个 dll 格式或者 so 格式的动态链接库,我们把它放在PHP安装目录的ext文件夹下,然后配置PHP.ini。需要在PHP最后添加xdebug的配置。

[xdebug]
zend_extension="C:\Devlope\wamp\php7.16\ext\php_xdebug-2.5.5-7.1-vc14-x86_64.dll"
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_port=9000
# 开启所有站点xdebug调试
xdebug.remote_connect_back=1

首先进行简单的配置,xdebug的配置非常丰富,详细可以查看官方配置说明文档:https://xdebug.org/docs/all_settings,配置完成之后,需要保存,然后重启服务器(Apache或者nginx),然后在 phpinfo(); 中检查是否安装成功。

PHPStorm运行调试配置

PHPStorm服务器配置

如果跳过这一步,则下一步就需要手动添加服务器。如果在这儿配置了服务器,就可以在下一步中直接选择。
PHPStorm选择菜单:File -> Settings -> Language & Frameworks -> PHP -> Servers,点击那个绿色的 + 可以添加一个服务器配置,可以配置服务器的主机地址,端口一击调试器,详细可以参考下一步的截图。

PHPStorm运行项目配置

PHPStorm选择菜单:Run -> Edit Configurations;点击左上角的 + 添加配置,在候选框中选择 PHP Web Application,然后点击添加一个PHP项目实例。填写右边的相关信息,Start URL 为你的项目的访问地址,这个是需要在你的服务器(Apache或者nginx)中配置的。Server哪儿点击右边的三个点,可以添加一个服务器实例,注意填写的Host需要相同。

使用PHPStorm+XDebug搭建单步调试环境

PHPStorm调试配置

PHPStorm选择菜单:File -> Settings -> Language & Frameworks -> PHP -> Debug,点击Debug这一项,可以看到Debug的配置,一般这儿不用修改,只需要注意Debug port需要和你在PHP.ini中配置的port一致,并且勾选Can accept external connections。

PHPStorm进行单步调试

一切就绪,接下来就是单步调试了。可以通过点击PHPStorm中代码左边的位置设置断点,现在我们可以在 Laravel 网站根目录 Public 下的 index.php 开头设置一个断点,然后选择PHPStorm菜单:Run -> Debug "alaim" 进行调试,可以看到PHPStorm底部的信息框中答应出了所有变量的值。

使用PHPStorm+XDebug搭建单步调试环境

F8:单步,不跳入函数
F7:执行跳指令,跳入函数
Shift+F8:跳出函数
Alt+9:运行到指针处

PHP 相关文章推荐
smarty实例教程
Nov 19 PHP
php 清除网页病毒的方法
Dec 05 PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 PHP
php数组去重复数据示例
Feb 25 PHP
采用ThinkPHP中F方法实现快速缓存实例
Jun 13 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
Aug 11 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
php实现专业获取网站SEO信息类实例
Apr 02 PHP
[原创]php简单隔行变色功能实现代码
Jul 09 PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 PHP
Yii CGridView用法实例详解
Jul 12 PHP
php实现图片以base64显示的方法
Oct 13 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 #PHP
swoole和websocket简单聊天室开发
Nov 18 #PHP
php单元测试phpunit入门实例教程
Nov 17 #PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 #PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 #PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 #PHP
PHP实现求解最长公共子串问题的方法
Nov 17 #PHP
You might like
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
PHP内置加密函数详解
2016/11/20 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
js三种排序算法分享
2012/08/16 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
Python中的面向对象编程详解(上)
2015/04/13 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
python负载均衡的简单实现方法
2018/02/04 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
python多维数组分位数的求取方式
2020/03/03 Python
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
车间工艺员岗位职责
2013/12/09 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
建筑横幅标语
2014/10/09 职场文书
奖励通知
2015/04/22 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android