使用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 相关文章推荐
在线竞拍系统的PHP实现框架(一)
Oct 09 PHP
php上传、管理照片示例
Oct 09 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
PHP操作xml代码
Jun 17 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
Yii操作数据库的3种方法
Mar 11 PHP
phpnow php探针环境检测代码
Nov 04 PHP
php数组合并与拆分实例分析
Jun 12 PHP
php常用图片处理类
Mar 16 PHP
php实现计算百度地图坐标之间距离的方法
May 05 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 PHP
laravel使用Faker数据填充的实现方法
Apr 12 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
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
php中session使用示例
2014/03/29 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
信号生成及DFT的python实现方式
2020/02/25 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
技校个人求职信范文
2014/01/25 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
幼师辞职信范文
2015/02/27 职场文书