前言:
很多開發者在開發PHP程序當中都是用“echo”或者“dump”輸出完成調試的,但是在某些情況輸出結果會失靈或者說很麻煩不能精準定位到問題所在;這個時候xdebug的優勢就凸顯出來了,給想查看的程序打斷點實時查看程序運行結果和狀態,並且你可以在控制檯編寫臨時功能用來調試已驗證自己邏輯,總之能有諸多優勢。
環境準備:
1、PHPstorm idea工具、vagrant、VirtualBox,以及vagrantbox鏡像文件homestead.box
2、PHPstorm:https://www.jetbrains.com/phpstorm/download/ 下載地址
3、vagrant:https://www.vagrantup.com/downloads.html 下載地址
4、VirtualBox:https://www.virtualbox.org/ 下載地址
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的文檔,地址:https://learnku.com/docs/laravel/7.x/homestead/7450 Laravel Homestead
homestead.box下載:
box file:https://app.vagrantup.com/boxes/search 此地址是搜索地址
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擴展配置參數:
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
好了擴展配置完成,可以訪問hosts配置的域名,在你的PHPstorm項目記得給要調試的程序設置斷點,類似下面這樣。
執行到斷點紅點處暫停程序,且在varables以顯示了加載的數據。