Ubuntu 14.04 預設關閉 PHP 錯誤顯示,開發時極不方便。本文提供「精簡版」與「詳細版」兩套配置方案,涵蓋 php.ini、Apache 設定與服務重啟全流程。
# 1. 編輯 php.ini
sudo gedit /etc/php5/apache2/php.ini
# 修改兩處:
display_errors = On
error_reporting = E_ALL | E_STRICT
# 2. 重啟 Apache
sudo /etc/init.d/apache2 restart
# 開啟錯誤顯示
display_errors = On
# 錯誤報告等級:報告所有錯誤包含嚴格標準
error_reporting = E_ALL | E_STRICT
# 常見舊設定(需覆蓋):
# error_reporting = E_ALL & ~E_NOTICE
# error_reporting = E_ALL & ~E_DEPRECATED
php_flag display_errors on
php_value error_reporting 2039 # 2039 = E_ALL | E_STRICT 數值
註:Ubuntu 14.04 httpd.conf 預設為空檔,直接新增即可。
sudo /etc/init.d/apache2 restart
# 或
sudo service apache2 restart
建立 /var/www/html/test.php:
<?php
echo $undefined_var; // 觸發 Notice
trigger_error("測試錯誤", E_USER_WARNING);
?>
瀏覽器訪問應顯示:
Notice: Undefined variable: undefined_var in /var/www/html/test.php on line 2
Warning: 測試錯誤 in /var/www/html/test.php on line 3
| 現象 | 原因 | 解決 |
|---|---|---|
| 修改後仍不顯示 | 編輯錯誤的 php.ini | php --ini 確認載入路徑 |
| 只顯示部份錯誤 | error_reporting 等級不足 | 確認 E_ALL | E_STRICT |
| 白屏無輸出 | 語法錯誤導致編譯失敗 | 檢查 /var/log/apache2/error.log |
display_errors,改用 log_errors = On + error_logerror_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT依專案階段選擇適當模式,開發期全開、生產期記錄日誌,兼顧效率與安全。