PHP安全-錯(cuò)誤報(bào)告
沒(méi)有不會(huì)犯錯(cuò)的開(kāi)發(fā)者,PHP的錯(cuò)誤報(bào)告功能將協(xié)助您確認(rèn)和定位這些錯(cuò)誤。可以PHP提供的這些詳細(xì)描述也可能被惡意攻擊者看到,這就不妙了。使大眾看不到報(bào)錯(cuò)信息,這一點(diǎn)很重要。做到這一點(diǎn)很容易,只要關(guān)閉display_errors,當(dāng)然如果您希望得到出錯(cuò)信息,可以打開(kāi)log_errors選項(xiàng),并在error_log選項(xiàng)中設(shè)置出錯(cuò)日志文件的保存路徑。
由于出錯(cuò)報(bào)告的級(jí)別設(shè)定可以導(dǎo)致有些錯(cuò)誤無(wú)法發(fā)現(xiàn),您至少需要把error_reporting設(shè)為E_ALL(E_ALL | E_STRICT 是最高的設(shè)置, 提供向下兼容的建議, 如不建議使用的提示).
所有的出錯(cuò)報(bào)告級(jí)別可以在任意級(jí)別進(jìn)行修改,所以您如果使用的是共享的主機(jī),沒(méi)有權(quán)限對(duì)php.ini, httpd.conf, 或 .htaccess等配置文件進(jìn)行更改時(shí),您可以在程序中運(yùn)行出錯(cuò)報(bào)告級(jí)別配置語(yǔ)句:
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://php.net/manual/ini.php 對(duì)php.ini的選項(xiàng)配置作了詳盡的說(shuō)明。
PHP還允許您通過(guò) set_error_handler( ) 函數(shù)指定您自已的出錯(cuò)處理函數(shù):
CODE:
<?php
set_error_handler(’my_error_handler’);
?>
上面程序指定了您自已的出錯(cuò)處理函數(shù)my_error_handler( ); 下面是一個(gè)實(shí)際使用的示例:
CODE:
<?php
function my_error_handler($number, $string, $file, $line, $context)
{
$error = '= == == == ==nPHP ERRORn= == == == ==n';
$error .= 'Number: [$number]n';
$error .= 'String: [$string]n';
$error .= 'File: [$file]n';
$error .= 'Line: [$line]n';
$error .= 'Context:n' . print_r($context, TRUE) . 'nn';
error_log($error, 3, ’/usr/local/apache/logs/error_log’);
}
?>
小提示
PHP 5還允許向set_error_handler( )傳遞第二個(gè)參數(shù)以限定在什么出錯(cuò)情況下執(zhí)行出定義的出錯(cuò)處理函數(shù)。比如,現(xiàn)在建立一個(gè)處理告警級(jí)別(warning)錯(cuò)誤的函數(shù):
CODE:
<?php
set_error_handler(’my_warning_handler’, E_WARNING);
?>
PHP5還提供了異常處理機(jī)制,詳見(jiàn)http://php.net/exceptions
相關(guān)文章:
1. Python中scrapy下載保存圖片的示例2. php 輸出緩沖 Output Control用法實(shí)例詳解3. Python中實(shí)現(xiàn)輸入一個(gè)整數(shù)的案例4. PHP系統(tǒng)設(shè)計(jì)與云架構(gòu)5. python 根據(jù)列表批量下載網(wǎng)易云音樂(lè)的免費(fèi)音樂(lè)6. 使用EF Code First搭建簡(jiǎn)易ASP.NET MVC網(wǎng)站并允許數(shù)據(jù)庫(kù)遷移7. Java:過(guò)去、未來(lái)的互聯(lián)網(wǎng)編程之王8. python 爬取豆瓣網(wǎng)頁(yè)的示例9. Java業(yè)務(wù)校驗(yàn)工具實(shí)現(xiàn)方法10. PHP終止腳本運(yùn)行三種實(shí)現(xiàn)方法詳解
