前言:
很多开发者在开发PHP程序当中都是用“echo”或者“dump”输出完成调试的,但是在某些情况输出结果会失灵或者说很麻烦不能精准定位到问题所在;这个时候xdebug的优势就凸显出来了,给想查看的程序打断点实时查看程序运行结果和状态,并且你可以在控制台编写临时功能用来调试已验证自己逻辑,总之能有诸多优势。
环境准备:
1、PHPstorm idea工具、vagrant、VirtualBox,以及vagrantbox镜像文件homestead.box
2、PHPstorm:Download PhpStorm: Lightning-Smart PHP IDE 下载地址
3、vagrant:Downloads | Vagrant by HashiCorp 下载地址
4、VirtualBox:Oracle VM VirtualBox 下载地址
5、homestead.box:下载网站因人而异,下载速度一般比较慢,我是通过下载地址用迅雷下载的;
下载地址可以通过官方的命令获取到,在执行 vagrant box add xxxx 命令时也需要下载文件,这时就会看到下载地址;vagrant添加box镜像后面在详细介绍。
为什么使用vagrant,不用docker?
使用vagrant是因为感觉laravel的集成环境homestead.box镜像做的很好了,懒的折腾docker,vagrant属于全量虚拟化docker则不是,所以vagrant的环境会比docker的大不少,但是效果是一样,并且docker针对集群更友好;区别不多说了,自行百度吧;假如你docker用的很好也可以了,重要内容在后半段;顺便说一下homestead环境已经集成的很全了,本地开发使用足够了。
Vagrant使用:
1、vagrant box list [列出本地已安装镜像]
2、vagrant box add you_box_file_path.box [安装镜像,且使用本地box镜像文件]
3、vagrant box delete box_name [删除已安装镜像]
4、vagrant global-status [查看全局镜像状态]
5、vagrant up [启动镜像]
6、vagrant halt [关闭镜像]
7、vagrant reload [重启镜像]
8、vagrant ssh [进入虚拟机]
说明:
homestead环境有单独配置文件,需要将参数加载进镜像内,所以homestead镜像环境启动重启需要添加 "--provision"。options,启动【vagrant up --provision】,重启【vagrant reload --provision】,建议大家可以看下laravel的文档,地址:Homestead |《Laravel 7 中文文档 7.x》| Laravel China 社区 Laravel Homestead
homestead.box下载:
box file:Discover Vagrant Boxes - Vagrant Cloud 此地址是搜索地址
homestead box:https://vagrantcloud.com/laravel/boxes/homestead/versions/9.5.0-alphal/providers/virtualbox.box
homestead环境搭建:
下载github上的homestead环境,下载地址:https://github.com/laravel/homestead 在laravel文档上也有提到;下载完成后大家可以参看文档完成配置;在初次启动镜像时会遇到我上面的说到的问题,安装box镜像很慢。
1、下载homestead环境:
git clone https://github.com/laravel/homestead.git
推荐使用此方法,拉取项目后 `cd homestead` 进入到项目;还可以不使用默认的master分支,切换到指定版本分支上,查看版本`git tag --list`会显示出全部已发布版本,我这里就不切换了,使用master的项目。
2、启动镜像:
首先执行脚本获取配置参数,linux/unix 执行 `bash ./init.sh`;Windows执行:双击“init.bat”文件即可。
之后会生成“Homestead.yaml”文件,具体使用查看上文说到的文档,此处不再说明。
然后运行vagrant镜像 `vagrant up --provision`
红色部分就是镜像文件下载地址了,可以终止当前进程,终止快捷键`ctrl+c`如果你是Mac执行`command+c`或者`^键+c`还不行就是z键,然后用红色地址新建一个迅雷下载任务等待下载完成;下载完成后手动添加该镜像就可以;但是还会有个问题,homestead启动要指定镜像版本,直接使用vagrant box add xxxxx.box 是没有版本号的,所以我使用了配置文件方式添加镜像,附带我的配置文件。
3、metadata.json
{
"name": "laravel/homestead",
"versions": [{
"version": "9.5.0-alpha1",
"providers": [{
"name": "virtualbox",
"url": "file://E:/virtualboxs/homestead.box"
}]
}]
}
url地址根据你自己的文件所在位置修改即可。
执行`vagrant box add metadata.json` 等待完成添加即可。
完成后再次运行`vagrant up --provision`环境就会启动起来。
说明:假如你的环境未能启动,请通读laravel 关于 homestead 文档。
PHPstorm配置:
确保端口9000 别的也可以,后期修改PHP的xdebug扩展的参数即可,此处主要为了统一端口。
PHP的xdebug配置项采用dbgp方式,并配置你自己的key,我这里设置PHPSTORM是key值。此key在xdebug扩展配置参数要统一。
我这里添加server使用NGINX的虚拟机,在hosts文件我自定义的域名
1-是我的本地域名
2-勾选使用映射地址
3-填写项目在虚拟机里面的绝对地址
打开小电话监听,设置web地址
选择php web page 类型,name自定义,sever选择刚才添加的server然后保存;到此PHPstorm匹配完成。
hosts参数配置:
IP要对应
我的映射目录是将本地homestead项目内的code目录映射到虚拟机的/vagrant/code目录下,所以PHPstorm配置虚拟机时映射的目录是/vagrant/code/object_path,根据自己实际情况自行修改。
xdebug扩展配置:
以下内容就是xdebug扩展配置参数:
version: 2.*
zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000
xdebug.max_nesting_level = 512
xdebug.idekey = PHPSTORM
xdebug.default_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = dbgp
version:3.*
zend_extension=xdebug.so
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = true
xdebug.client_port = 9003
xdebug.max_nesting_level = 512
xdebug.remote_handler = dbgp
xdebug.idekey = PHPSTORM
好了扩展配置完成,可以访问hosts配置的域名,在你的PHPstorm项目记得给要调试的程序设置断点,类似下面这样。
执行到断点红点处暂停程序,且在varables以显示了加载的数据。