參考網址:LINUX 技術手札
程式前沿 PHP中error_reporting()用法詳解
要開啟或關閉 PHP 的錯誤訊息有幾種方法, 分別是在 php.ini 內設定, httpd.conf 及 .htaccess 設定, 或者在 PHP 程式內設定, 以下是各種方法的設定方法。
1. php.ini
在 php.ini 一般預設路徑在 /etc/php.ini, 在 php.ini 內找到 display_errors, 設定為 On 是開啟錯誤信息, Off 是關閉輸出:
1 2 3 |
display_errors = On # 開啟錯誤提示
display_errors = Off # 關閉錯誤提示 |
另一個可以設定的選項是 error_reporting, 它可以設定輸出那些錯誤提示, 常用的設定有:
1 2 3 4 5 |
error_reporting E_ALL # 輸出全部錯誤
error_reporting E_ALL & ~E_NOTICE # 除了 Notice 外,全部錯誤輸出
error_reporting 0 # 不輸出任何錯誤 |
修改 php.ini 後, 需要重新啟動網頁伺服器, 設定才會生效:
# systemctl restart httpd
2. httpd.conf / .htaccess
另一種方法是透過 apache 的層面設定, 可以在 httpd.conf 及 .htaccess 設定, 好處是可以對個別虛擬主機或目錄進行設定, 不用修改整台伺服器的設定, CentOS 下 httpd.conf 的預設位置在 /etc/httpd/conf/httpd.conf
# vi /etc/httpd/conf/httpd.conf
在提定的目錄或 VirtualHost 設定, 例如想在 /var/www/html/debug 設定輸出全部錯誤, 可以這樣:
1 2 3 |
<Directory "/var/www/html/debug"> php_flag display_errors On php_flag error_reporting 32767 |
可以看到設定跟 php.ini 差不多, 只是在 php 選項前加入 php_flag 或 php_value 設定, 而在 httpd.conf 的設定, 需要重新啟動網頁伺服器, 設定才會生效:
# systemctl restart httpd
以上語法如果放在 .htaccess 內同樣適用, 而且不用重新啟動網頁伺服器, 只要在設定的目錄下建立 .htaccess, 加入以下語法即可:
php_flag display_errors On
php_flag error_reporting 32767
p.s. error_reporting 只可以用數值設定, 所有設定數值可以在 PHP 官網 取得。
3. PHP 程式
另一個方法是在 php 程式內設定, 分別可以用 ini_set() 及 error_reporting() 兩個函式設定:
1 2 3 4 5 6 7 |
<?php ini_set('display_errors','off'); # 關閉錯誤輸出
ini_set('display_errors','on'); # 開啟錯誤輸出
error_reporting(E_ALL & ~E_NOTICE) # 設定輸出錯誤類型 ?> |