溫馨提示×

Ubuntu上PHP如何進行調試

小樊
34
2025-10-16 08:30:22
欄目: 編程語言

Ubuntu上PHP調試的完整流程(以Xdebug為核心)

一、前置準備:確認PHP環境

在開始調試前,需明確PHP運行環境(如Web服務器是Apache/Nginx、PHP版本(如8.1/8.2)、SAPI類型(cli/fpm/apache2))??赏ㄟ^以下命令查看關鍵信息:

php -v                  # 查看PHP版本
php --ini               # 查找php.ini文件路徑
ls /etc/php/$(php -v | cut -d. -f1,2)/mods-available/  # 查看可用擴展(含xdebug)

二、安裝Xdebug擴展

Ubuntu推薦通過APT包管理器安裝Xdebug(自動處理依賴):

sudo apt update
sudo apt install php-xdebug  # 根據PHP版本自動安裝對應包(如php8.2-xdebug)

安裝完成后,Xdebug會自動添加到mods-available目錄,需通過phpenmod啟用:

sudo phpenmod xdebug

三、配置Xdebug與PHP集成

編輯php.ini文件(路徑由php --ini確定),在文件末尾添加以下配置(務必根據實際端口調整):

[Xdebug]
; 加載Xdebug擴展(路徑通常自動填充,無需手動指定)
zend_extension=xdebug.so
; 啟用調試模式(支持多種模式,debug為核心)
xdebug.mode=debug
; 客戶端主機(IDE所在機器IP,本地調試用127.0.0.1)
xdebug.client_host=127.0.0.1
; 調試端口(默認9003,需與IDE一致)
xdebug.client_port=9003
; IDE標識(如PHPStorm/VSCode,需與IDE配置一致)
xdebug.idekey=PHPSTORM
; 自動啟動調試(可選,方便開發時無需手動觸發)
xdebug.start_with_request=yes

保存后重啟Web服務:

# Apache
sudo systemctl restart apache2
# Nginx + PHP-FPM
sudo systemctl restart php8.2-fpm  # 版本替換為實際PHP版本
sudo systemctl restart nginx

四、IDE配置(以VS Code為例)

  1. 安裝擴展:在VS Code擴展商店搜索“PHP Debug”(作者:Felix Becker),點擊安裝。
  2. 創建調試配置:按下Ctrl+Shift+P,輸入“Debug: Open launch.json”,選擇“PHP”環境,添加以下配置:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "log": true,
            "stopOnEntry": false,
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}"  // 映射項目路徑(服務器路徑:本地路徑)
            }
        }
    ]
}
  1. 啟動調試:按下F5啟動調試會話,VS Code會監聽9003端口。

五、開始調試

  1. 設置斷點:在VS Code中打開PHP文件,點擊行號左側設置斷點(紅點)。
  2. 觸發調試
    • 瀏覽器方式:在項目URL后添加?XDEBUG_SESSION_START=PHPSTORM(如http://localhost/test.php?XDEBUG_SESSION_START=PHPSTORM),訪問頁面即可觸發斷點。
    • IDE方式:右鍵點擊PHP文件,選擇“Debug”→“Start Debugging”,然后在瀏覽器中訪問頁面。
  3. 調試操作:當代碼執行到斷點時,VS Code會暫停,可通過頂部工具欄進行**Step Over(F10)、Step Into(F11)、Step Out(Shift+F11)、Continue(F5)**等操作,同時可查看變量值、調用棧等信息。

六、常見問題排查

  • 端口沖突:若9003端口被占用,修改xdebug.client_port為其他端口(如9004),并同步更新IDE配置。
  • 路徑映射錯誤:確保pathMappings中的服務器路徑與本地項目路徑一致,否則無法正確顯示變量。
  • Xdebug未加載:創建info.php文件(<?php phpinfo(); ?>),訪問后在頁面搜索“Xdebug”,若未出現則說明擴展未正確加載,需檢查php.ini路徑和zend_extension配置。

七、補充:日志調試(可選)

若不想使用IDE,可通過日志查看調試信息。在php.ini中添加:

xdebug.log=/var/log/xdebug.log  # 日志文件路徑
xdebug.log_level=7              # 日志級別(7=所有信息)

重啟Web服務后,執行PHP腳本時,Xdebug會將調試信息寫入日志文件,可通過tail -f /var/log/xdebug.log實時查看。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女