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

因爲以前作 .net 開發比較熟悉 visualstudio,因此自 visualstudio code 發佈後就一直在不一樣場合使用 vscode ,好比前端、node等等。最近在作 laravel 項目,須要經過 vscode 來調試 homestead 中的 laravel 代碼。作了一些有關 laravel 調試環境安裝部署的嘗試,本文是一個簡要記錄。php

基本環境

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

laravel 版本 5.3前端

homestead 版本 v1.0.1node

php 版本 7.1(homestead已集成)nginx

xdebug 版本 2.5(homestead已集成)laravel

vscode 版本 1.9.0web

vagrant 版本 1.9.1json

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

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

相關文章
相關標籤/搜索