[Apache] 顯示或不顯示錯誤

URL Link //n.sfs.tw/10420

2016-12-12 12:02:34 By 張○○

php預設錯誤不顯示,可修改 /etc/php.ini

; 約513行,顯示全部除了作廢等級
error_reporting = E_ALL & ~E_DEPRECATED
; 約530行,顯示錯誤
display_errors = On
; 約541行,顯示php啟動錯誤
display_startup_errors = Off
; 約 551,記錄錯誤
log_errors = On

但如果沒辦法或沒存取php.ini的權限,例如是共用的伺服器;或是不想影響其他網頁的設定,有兩個方法:

方法一,使用php的ini_set

<?php
ini_set(‘error_reporting’, E_ALL & ~E_DEPRECATED);
ini_set(‘display_errors’, 1);
ini_set(‘display_startup_errors’, 1); 


吃飽了休息一下

方法二,使用 .htaccess 檔

條件是目錄的權限要容許 overwrite

    <Directory "/path/to/your/website">
        AllowOverride All
        ...
    </Directory>

在你的網頁目錄下新增一個.htaccess的檔,內容為

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
# 設定把錯誤記錄
php_flag  log_errors on
php_value error_log  /path/to/your/website/PHP_errors.log
# 防止直接由網頁存取log
<Files PHP_errors.log>
   Order allow,deny
   Deny from all
   Satisfy All
</Files>

參考資料

[1] http://perishablepress.com/press/2007/12/17/how-to-enable-php-err