Ubuntu PHP錯誤日志配置調整指南
PHP的配置文件路徑因運行模式(命令行、Apache、PHP-FPM)而異,可通過以下命令快速定位:
php --ini
輸出結果會顯示Loaded Configuration File
(加載的配置文件路徑),常見路徑包括:
/etc/php/{version}/cli/php.ini
(如/etc/php/8.2/cli/php.ini
)/etc/php/{version}/apache2/php.ini
/etc/php/{version}/fpm/php.ini
(如/etc/php/8.2/fpm/php.ini
)sudo cp /etc/php/{version}/fpm/php.ini /etc/php/{version}/fpm/php.ini.bak
用文本編輯器(如nano
)打開對應的php.ini
文件,調整以下核心參數:
; 啟用所有錯誤報告(生產環境可調整為E_ERROR|E_WARNING等)
error_reporting = E_ALL
; 關閉瀏覽器直接顯示錯誤(防止敏感信息泄露,生產環境必須為Off)
display_errors = Off
; 開啟錯誤日志記錄功能
log_errors = On
; 指定錯誤日志文件路徑(需確保PHP進程有寫入權限)
error_log = /var/log/php_errors.log
參數說明:
error_reporting
:控制記錄哪些級別的錯誤(E_ALL
表示所有錯誤,生產環境建議縮小范圍);display_errors
:設為Off
可避免在瀏覽器中暴露錯誤詳情(開發環境可設為On
調試);log_errors
:設為On
表示將錯誤寫入日志文件;error_log
:自定義日志路徑(默認路徑為/var/log/php_errors.log
,需手動創建并授權)。若指定的日志路徑不存在,需手動創建并賦予PHP進程(通常為www-data
用戶)寫入權限:
sudo touch /var/log/php_errors.log
sudo chown www-data:www-data /var/log/php_errors.log
sudo chmod 640 /var/log/php_errors.log
根據使用的Web服務器類型,重啟對應服務:
sudo systemctl restart apache2
sudo systemctl restart php{version}-fpm # 如php8.2-fpm
sudo systemctl restart nginx
創建測試腳本(如/var/www/html/test.php
),內容如下:
<?php
// 故意觸發錯誤(如調用未定義函數)
non_existent_function();
?>
訪問該腳本(如http://your_server_ip/test.php
),若配置正確,瀏覽器會返回空白頁面(display_errors=Off
),而日志文件/var/log/php_errors.log
中會記錄錯誤詳情:
tail -f /var/log/php_errors.log # 實時查看日志
日志示例:
[20-Oct-2025 10:00:00 UTC] PHP Fatal error: Uncaught Error: Call to undefined function non_existent_function() in /var/www/html/test.php:2
Stack trace:
#0 {main}
thrown in /var/www/html/test.php on line 2
若無法修改php.ini
,可通過Web服務器配置動態調整錯誤日志設置:
<Directory /var/www/html>
php_value error_reporting E_ALL
php_value display_errors Off
php_value log_errors On
php_value error_log /var/log/php_errors.log
</Directory>
location ~ \.php$
塊中添加):location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php{version}-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_reporting=E_ALL display_errors=Off log_errors=On error_log=/var/log/php_errors.log";
}
修改后需重啟對應服務。
通過以上步驟,可完成Ubuntu環境下PHP錯誤日志的配置調整,確保錯誤信息被正確記錄,便于后續排查問題。