天天看點

phpstorm-vagrant-xdebug 調試環境內建

前言:

很多開發者在開發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`

phpstorm-vagrant-xdebug 調試環境內建

紅色部分就是鏡像檔案下載下傳位址了,可以終止目前程序,終止快捷鍵`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配置:

phpstorm-vagrant-xdebug 調試環境內建

確定端口9000 别的也可以,後期修改PHP的xdebug擴充的參數即可,此處主要為了統一端口。

phpstorm-vagrant-xdebug 調試環境內建

PHP的xdebug配置項采用dbgp方式,并配置你自己的key,我這裡設定PHPSTORM是key值。此key在xdebug擴充配置參數要統一。

phpstorm-vagrant-xdebug 調試環境內建

我這裡添加server使用NGINX的虛拟機,在hosts檔案我自定義的域名

1-是我的本地域名

2-勾選使用映射位址

3-填寫項目在虛拟機裡面的絕對位址

phpstorm-vagrant-xdebug 調試環境內建

打開小電話監聽,設定web位址

phpstorm-vagrant-xdebug 調試環境內建

選擇php web page 類型,name自定義,sever選擇剛才添加的server然後儲存;到此PHPstorm比對完成。

hosts參數配置:

phpstorm-vagrant-xdebug 調試環境內建

IP要對應

phpstorm-vagrant-xdebug 調試環境內建

我的映射目錄是将本地homestead項目内的code目錄映射到虛拟機的/vagrant/code目錄下,是以PHPstorm配置虛拟機時映射的目錄是/vagrant/code/object_path,根據自己實際情況自行修改。

xdebug擴充配置:

phpstorm-vagrant-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項目記得給要調試的程式設定斷點,類似下面這樣。

phpstorm-vagrant-xdebug 調試環境內建

執行到斷點紅點處暫停程式,且在varables以顯示了加載的資料。