php錯誤處理
當我們開發程序時,有時候程序出現了問題,我們就可以用以下幾種辦法找出錯誤。
開發階段:開發時輸出所有的錯誤報告,有利於我們進行程序調試
運行階段:我們不要讓程序輸出任何一種錯誤報告(不能讓用戶看到(包括懂技術, 不懂技術的人))
將錯誤報告寫入日志中
一、指定錯誤報告 error_reporting = E_LL
二、關閉錯誤輸出 display_errors = Off
三、開啟錯誤日志功能 log_errors = On
1. 默認如果不指定錯誤日志位置,則默認寫WEB服務器的日志中
2. 為error_log選項指定 一個文件名(可寫)
3. 寫入到操作系統日志中error_log=syslog
以下代碼示例
<span style="font-family:SimSun;font-size:14px;"><?php // error_reporting(E_ALL); /// ini_set("display_errors", "off"); // ini_set("error_log", "syslog"); // ini_set("MAX_FILEUPLOAD", 200000000); // echo ini_get("upload_max_filesize"); // error_log("this is a error message!!!!"); getType($var); //注意 getType(); //警告 getTye(); //錯誤 會終止程序運行 echo "###########################<br>"; ?></span>
當然php還提供了函數error_get_last()來獲得錯誤信息函數定義和用法
error_get_last()函數獲取最後發生的錯誤。
該函數以數組的形式返回最後發生的錯誤。
返回的數組包含 4 個鍵和值:
[type] - 錯誤類型
[message] - 錯誤消息
[file] - 發生錯誤所在的文件
[line] - 發生錯誤所在的
小例子:
<span style="font-family:SimSun;font-size:14px;"><?php echo $test; print_r(error_get_last()); ?>輸出: Array ( [type] => 8 [message] => Undefined variable: test [file] => D:\www\test.php [line] => 2 )</span>
php5.4以後也提供了PHP預定義變量$php_errormsg
$php_errormsg — 前一個錯誤信息
$php_errormsg 變量包含由 PHP 生成的最新錯誤信息。這個變量只在錯誤發生的作用域內可用,並且要求track_errors 配置項是開啟的(默認是關閉的)。
例子:
<?php @strpos(); echo $php_errormsg; ?>
會輸出:
Wrong parameter count for strpos()
所以這樣我們也很方便了。。。這樣是不是對調試程序和排查錯誤的時候很有幫助呢?
URL:http://www.bianceng.cn/webkf/PHP/201410/45958.htm
這些錯誤報告級別是錯誤處理程序旨在處理的錯誤的不同的類型: