用 Visual Studio Code 調試運行在 homestead 環境中的 laravel 程序


由於之前做 .net 開發比較熟悉 visualstudio,所以自 visualstudio code 發布后就一直在不同場合使用 vscode ,比如前端、node等等。最近在做 laravel 項目,需要通過 vscode 來調試 homestead 中的 laravel 代碼。做了一些有關 laravel 調試環境安裝部署的嘗試,本文是一個簡要記錄。

基本環境

閱讀本文之前,你應該安裝好了基本的開發環境,比如 visualstudio code、VirtualBox 、vagrant、homestead、laravel 等等。原則上本文只討論如何通過配置這些應用以實現對 laravel 項目的 debug ,不討論安裝相關軟件的細節。

laravel 版本 5.3

homestead 版本 v1.0.1

php 版本 7.1(homestead已集成)

xdebug 版本 2.5(homestead已集成)

vscode 版本 1.9.0

vagrant 版本 1.9.1

VirtualBox 版本 5.1.12

安裝和配置 vscode 插件 PHP Debug

通過 marketplace 平台安裝插件 phpdebug。 1.9.0 版的 vscode 集成了插件管理功能在左側的菜單欄,點擊擴展按鈕 > 輸入 PHP Debug > 在搜索結果中找到 PHP debug > 點擊安裝,安裝后重啟 vscode 使其生效。

打開調試界面。點擊右上角的齒輪按鈕配置 launch.json 文件,選擇 PHP 選項。此時會生成 launch.json 文件,左側的 debug 類型默認選中了 listen for xdebug 選項。修改 launch.json 配置如下:

{
    "version": "0.2.0",
    "configurations": [        
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "stopOnEntry":false,
            "localSourceRoot": "${workspaceRoot}/public",
            "serverSourceRoot": "/home/vagrant/Code/Laravel/public",
            "log": false
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${workspaceRoot}/public/index.php",
            "cwd": "${workspaceRoot}/public/",
            "port": 9000
        }
    ]
}

這里主要添加了 localSourceRootserverSourceRoot 兩個配置項:

  1. localSourceRoot 配置的是 laravel 項目程序入口位置,${workspaceRoot} 表示當前工程項目根目錄,所以取值 "${workspaceRoot}/public"
  2. serverSourceRoot 配置的是遠程服務器端 laravel 站點根目錄位置,該目錄必須與 localSourceRoot 位置對應。根據 homestead 環境,這里取值 "/home/vagrant/Code/Laravel/public"

啟動Homestead

打開命令行終端,依次執行下列命令:

$ vagrant up 
$ vagrant ssh

安裝 XDebug 

注:homestead 已集成了 XDebug,文件位置在 /usr/lib/php/20160303/xdebug.so 目錄中。如果你不需要更新版本的 Xdebug 功能,可以忽略此步驟。

建議你在 laravel 項目程序入口目錄 public 下創建一個臨時文件(如 test.php),輸入 phpinfo()。把 PHPinfo 的執行結果復制並粘貼到  XDebug installation wizard程序會根據你的系統環境給出相應的安裝向導。

1. 下載 xdebug-2.5.0.tgz

2. 解壓文件 tar -xvzf xdebug-2.5.0.tgz

3. 執行 cd xdebug-2.5.0

4. 執行 ./configure

5. 執行 make

6. 執行 cp modules/xdebug.so /usr/lib/php/20160303

配置 XDebug

打開文件 /etc/php/7.1/fpm/php.ini, 添加如下配置:

zend_extension = /usr/lib/php/20160303/xdebug.so
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = 192.168.10.1
xdebug.remote_port = 9000

主要有五項配置:

zend_extension 指定要加載的 xdebug 擴展文件;

xdebug.remote_enable 啟用遠程調試;

xdebug.remote_autostart 默認情況下需要通過指定 HTTP GET/POST 變量來啟用遠程調試,通過把該選項配置為 1 可以使所有請求自動連接至調試終端而無需指定專屬變量信息。詳情見: Remote Debugging

xdebug.remote_host 默認取值 localhost ,由於我們的 homestead 在虛擬機中,並且以 config.vm.network "private_network"形式配置了IP ,所以這里不能配置 localhost。需要手動指定 PC 機 IP 192.168.10.1;

xdebug.remote_port 默認端口號是 9000,這個在前面的 vscode 配置文件 launch.json 中有設置,與其對應即可。

重啟web服務Nginx

$ nginx -s reload

啟動 xdebug 調試

在 vscode 中進入 debug 界面,點擊 開始調試 按鈕,PHPdebug 插件將在本機的 9000 端口監聽來自 192.168.10.10 的網絡請求;

在項目文件 public/index.php 文件中打個斷點,然后通過瀏覽器訪問 http://homestead.app ;

一旦 homestead 中有網絡請求到 laravel 站點 ,vscode 編輯器即可接收到debug信息並在斷點位置暫停下來,同時打印出相關的執行環境上下文信息。

最后

本文地址:http://www.cnblogs.com/kelsen/p/6368550.html

如果您有任何建議或疑問請在下面留言交流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM