天天看點

如何使用 vscode 對基于 Docker 的 PHP 進行斷點調試

1. Visual Studio Code

1.1. 安裝、設定

  • 官方下載下傳
    • macOS
    • Linux
    • Windows
  • 推薦配置

    請參考這裡,隻是一些初始設定、美化等,與 PHP 調試無關。

1.2. PHP Debug

  • 安裝

    快捷鍵 cmd + p 或 ctrl + p,輸入

    ext install php debug

    注意:安裝完成後必須重新開機 vscode。
  • 配置

    打開一個 PHP 項目,點選菜單 Debug > Add Configuration,或按照下圖操作

    如何使用 vscode 對基于 Docker 的 PHP 進行斷點調試
    詳細配置如下:
    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Listen for XDebug",
                "type": "php",
                "request": "launch",
                "port": 9001, // 對應 XDebug 的配置
                "stopOnEntry": true,
                "pathMappings": {
                    // "容器中對應的項目位址": "本機項目位址"
                    // 絕對路徑
                    "/var/www/html/test/": "${workspaceRoot}"
                }
            },
            {
                "name": "Launch currently open script",
                "type": "php",
                "request": "launch",
                "program": "${file}",
                "cwd": "${fileDirname}",
                "port": 9001
            }
        ]
    }
               
    配置成功後,在項目下生成一個包含該配置的目錄,如下:
    .
    ├── .vscode
    │   ├── launch.json
    ├── 其它項目檔案
               

2. Docker 下的 PHP 環境

推薦直接克隆我之前封裝的一個基于 Docker 的 LNMPA 環境,當然你也可用使用你自己的 Docker PHP 環境,但是這裡的配置是針對 Nginx + Apache 的組合形式,你可以根據具體環境進行調整。

詳細如下:

2.1. 安裝、配置 XDebug 擴充

  • 修改 Dockerfile 檔案,安裝 XDebug
    ...
    && mkdir -p /tmp/xdebug \
    && wget -c https://github.com/xdebug/xdebug/archive/2.6.0.tar.gz \
    && tar -xf 2.6.0.tar.gz -C /tmp/xdebug --strip-components=1 \
    && docker-php-ext-configure /tmp/xdebug --enable-xdebug \
    && docker-php-ext-install /tmp/xdebug \
    ...
               
    修改後,需要重新編譯對應的鏡像檔案,更多安裝擴充的方式請參考:Docker 中的 PHP 如何安裝擴充
  • 配置 XDebug

    在 php.ini 檔案追加以下配置

    [XDebug]
    zend_extension = xdebug.so
    xdebug.remote_enable = 1
    xdebug.remote_handler = dbgp
    xdebug.remote_port = 9001
    xdebug.remote_autostart = 1
    xdebug.remote_connect_back = 0
    xdebug.idekey = docker
    xdebug.remote_host = 192.168.2.14
               
    說明:
    • remote_port 預設 9000,為避免沖突,改為 9001
    • remote_host 是主控端的 ip 位址

2.2. 調整 Nginx server 配置

server {

    listen 80;
    server_name my.test; # 這裡替換你的域名
    index index.html index.htm index.php;
    root /usr/share/nginx/html/test;

    ...

    location ~ .*\.(php|php5)?$ {
        proxy_pass http://php_apache:8091; # 這裡是對應的 apache 容器位址和端口
        proxy_read_timeout 300;
        proxy_send_timeout 300;
        index index.php;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    ...
}
           

主要追加以下兩個參數,用以解決在 debug 時 504 逾時問題,具體數值可根據需要設定。

  • proxy_read_timeout
  • proxy_send_timeout

2.3. 暴露 XDebug 通信接口

修改 docker-compose.yml 檔案,在 nginx 和 apache 服務下通過 expose 暴露 9001 端口

使用如下指令重新啟動服務

docker-compose stop
docker-compose down
docker-compose up -d
           

3. 測試斷點調試

按快捷鍵

F5

打開斷點,此時在浏覽器中通路網頁,将跳轉到 vscode 編輯器,并且樣式如下:

如何使用 vscode 對基于 Docker 的 PHP 進行斷點調試

說明:上圖是一個 TP 項目,雖然沒有手動設定斷點,但是開啟調試模式後,通路網頁會首先進入根目錄下的架構入口檔案。

版權聲明:本文為CSDN部落客「weixin_34097242」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34097242/article/details/91745201