PHP在Debian中的代碼調試方法
錯誤日志配置
調試前需確保錯誤信息可見(開發環境)或正確記錄(生產環境)。修改php.ini
文件(通過php --ini
查找路徑),設置:
display_errors = On
、error_reporting = E_ALL | E_STRICT
(直接顯示錯誤);display_errors = Off
、log_errors = On
、error_log = /var/log/php_errors.log
(記錄到文件,避免敏感信息泄露)。sudo systemctl restart apache2
或sudo systemctl restart php-fpm
)。代碼級調試工具
var_dump()
/print_r()
:在關鍵位置輸出變量類型和值(如var_dump($user->name)
),快速定位變量異常;die()
/exit()
:在代碼中插入中斷點(如die('Reached here')
),終止后續執行,縮小問題范圍;try-catch
塊:捕獲異常并記錄詳細信息(如try { ... } catch (Exception $e) { error_log($e->getMessage()); }
),避免程序崩潰并保留錯誤上下文。Xdebug是PHP最強大的調試擴展,支持斷點、變量監控、函數跟蹤等功能,需結合IDE(如PhpStorm、VSCode)使用。
通過Debian軟件包管理器安裝(適配PHP版本,如PHP 8.1):
sudo apt update
sudo apt install php8.1-xdebug
編輯php.ini
文件(路徑同上),添加以下配置:
[Xdebug]
zend_extension=xdebug.so # 加載Xdebug擴展
xdebug.mode=debug # 啟用調試模式
xdebug.client_host=127.0.0.1 # IDE所在主機IP(本地調試為127.0.0.1)
xdebug.client_port=9003 # 調試端口(默認9003,需與IDE一致)
xdebug.start_with_request=yes # 自動啟動調試(可選:trigger/yes)
xdebug.idekey=PHPSTORM # IDE標識(如PHPSTORM、VSCODE)
保存后重啟Web服務器。
.vscode/launch.json
文件,添加配置:{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/html": "${workspaceFolder}" # 映射遠程項目路徑到本地
}
}
]
}
http://localhost/index.php
),調試器會在斷點處暫停。除基礎error_log()
外,推薦使用Monolog(第三方日志庫)實現結構化日志:
composer require monolog/monolog
;use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$log = new Logger('app');
$log->pushHandler(new StreamHandler('/var/log/app.log', Logger::DEBUG));
$log->info('User logged in', ['user_id' => 123]); // 記錄帶上下文的日志
日志文件路徑可根據需求調整(如/var/log/app.log
)。display_errors
),生產環境關閉并記錄到日志(log_errors
);xdebug.client_port
為其他端口(如9004),并同步更新IDE配置;pathMappings
需準確對應遠程服務器項目路徑與本地工作區,否則無法正確調試。