#沒有不會犯錯的開發者,PHP的錯誤回報功能將協助您確認和定位這些錯誤。可以PHP提供的這些詳細描述也可能被惡意攻擊者看到,這就不妙了。使大眾看不到報錯訊息,這一點很重要。做到這一點很容易,只要關閉display_errors,當然如果您希望得到出錯訊息,可以打開log_errors選項,並在error_log選項中設定出錯日誌檔案的保存路徑。
由於出錯報告的等級設定可以導致有些錯誤無法發現,您至少需要把error_reporting設為E_ALL(E_ALL | E_STRICT 是最高的設定, 提供向下相容的建議, 如不建議使用的提示).
所有的出錯報告等級可以在任何層級進行修改,所以您如果使用的是共享的主機,沒有權限對php.ini, httpd.conf, 或 .htaccess等設定檔進行變更時,您可以在程式中執行出錯報告層級設定語句:
CODE:
<?php ini_set('error_reporting', E_ALL | E_STRICT); ini_set('display_errors', 'Off'); ini_set('log_errors', 'On'); ini_set('error_log', '/usr/local/apache/logs/error_log'); ?>
#小提示
http://www.php.cn/ 對php.ini的選項配置作了詳盡的說明。
PHP也讓您透過 set_error_handler( ) 函數指定您自已的錯誤處理函數:
CODE:
<?php set_error_handler('my_error_handler'); ?>
上面程式指定了您自已的錯誤處理函數my_error_handler( );
以下是一個實際使用的範例:
CODE:
<?php function my_error_handler($number, $string, $file, $line, $context) { $error = "= == == == ==\nPHP ERROR\n= == == == ==\n"; $error .= "Number: [$number]\n"; $error .= "String: [$string]\n"; $error .= "File: [$file]\n"; $error .= "Line: [$line]\n"; $error .= "Context:\n" . print_r($context, TRUE) . "\n\n"; error_log($error, 3, '/usr/local/apache/logs/error_log'); } ?>###############小提示# ########### PHP 5也允許向set_error_handler( )傳遞第二個參數以限定在什麼出錯情況下執行出定義的出錯處理函數。例如,現在建立一個處理警告等級(warning)錯誤的函數:############CODE:######
<?php set_error_handler('my_warning_handler', E_WARNING); ?>### 以上就是PHP安全-錯誤報告的內容,更多相關內容請關注PHP中文網(www.php.cn)! #####################