PHP中Too few arguments to function的問題及解決
目錄
- PHP Too few arguments to function的解決
- PHP學(xué)習(xí)筆記-PHP報錯處理
- 錯誤報告級別
- 調(diào)整錯誤報告級別
- 自定義錯誤處理
- 總結(jié)
PHP Too few arguments to function的解決
過去自定義函數(shù)的時候如果參數(shù)不足,則會拋出一個警告,但是在7.1開始,被提升為了錯誤異常。
function test($param){}test();
這樣調(diào)用test,在7.1便無法執(zhí)行,此時我們需要給param賦一個默認值,即使是空值,這樣,調(diào)用的時候就不會在報錯,同時也提醒我們需要養(yǎng)成賦默認值的習(xí)慣。
PHP學(xué)習(xí)筆記-PHP報錯處理
錯誤報告級別
PHP程序的錯誤發(fā)生一般歸屬于下列三個領(lǐng)域:
- 語法錯誤:語法錯誤最常見,并且也容易修復(fù)。如:代碼中遺漏一個分號。這類錯誤會阻止腳本的執(zhí)行。
- 運行時錯誤:這種錯誤一般不會阻止PHP腳本的執(zhí)行,但會阻止當(dāng)前要做的事情。輸出一條錯誤,但php腳本繼續(xù)執(zhí)行
- 邏輯錯誤:這種錯誤最麻煩,既不阻止腳本執(zhí)行,也不輸出錯誤消息。
調(diào)整錯誤報告級別
display_errors: 是否開啟PHP輸出錯誤報告的功能
值為:On(默認輸出錯誤報告)、 Off(屏蔽所有錯誤信息)
在PHP腳本中可調(diào)用ini_set( )函數(shù),動態(tài)設(shè)置php.ini配置文件.
如:ini_set("display_errors","On"); //顯示所有錯誤信息
error_reporting: 設(shè)置不同的錯誤報告級別。error_reporting = E_ALL & ~E_NOTICE? ?-- 可以拋出任何非注意的錯誤,默認值error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR? ?-- 只考慮致命的運行時錯誤、新解析錯誤和核心錯誤。error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE)? ?-- 報告除用戶導(dǎo)致的錯誤之外的所有錯誤。
在PHP腳本可以通過error_reporting( )函數(shù)動態(tài)設(shè)置錯誤報告級別。如:error_reporting(E_ALL);
自定義錯誤處理
自定義錯誤報告的處理方式,可以完全繞過標準的PHP錯誤處理函數(shù),這樣就可以按自己定義的格式打印錯誤報告,或改變錯誤報告打印的位置,以下幾種情況可以考慮自定義錯誤處理。
可以記下錯誤的信息,及時發(fā)現(xiàn)一些生產(chǎn)環(huán)境出現(xiàn)的問題
- 可以屏蔽錯誤。
- 可以控制錯誤的輸出。
- 可以作為調(diào)試工具。
使用set_error_handler()函數(shù)來設(shè)置用戶自定義錯誤處理。
1、錯誤日志
兩種方式記錄錯誤日志:
a.使用指定的文件記錄錯誤報告日志
1)先配置php.ini:
error_reporting = E_ALL?? ??? ?//將向PHP發(fā)送每個錯誤 ?? ?display_errors=Off ? ? ?? ??? ?//不顯示錯誤報告 ?? ?log_errors=On ? ? ? ? ??? ??? ?//決定日志語句記錄的位置 ?? ?log_errors_max_log=1024?? ?// 每個日志項的最大長度 ?? ?error_log=G:/myerror.log?? ?//指定錯誤寫進的文件
2)使用函數(shù):在php文件中使用error_log()來記錄日志,就可以將信息寫入到myerror.log文件中
如:
b.錯誤日志記錄到操作系統(tǒng)的日志里
【查看日志:如windows系統(tǒng),通過右擊“我的電腦”-> 選擇管理選項->在系統(tǒng)工具菜單中選擇事件查看器->在應(yīng)用程序選項中即可看到日志了。】
1)先配置PHP.ini文件中
error_reporting = E_ALL ? //將向PHP發(fā)送每個錯誤 ?? ?display_errors=Off ?? ? ? ? //不顯示錯誤報告 ??log_errors=On ?? ??? ? ? ? //決定日志語句記錄的位置。 ?? ?log_errors_max_log=1024 ? // 每個日志項的最大長度 ?? ?error_log=syslog ?? ? ? ? //指定到系統(tǒng)日志中。
2)使用四個函數(shù)來記錄日志
define_syslog_variables();//為系統(tǒng)日志初始化配置 ?? ?openlog();?? ??? ? ? ? //打開一個日志鏈接 ??syslog();?? ??? ? ? ? //發(fā)送一條日志記錄 ?? ?closelog();?? ? ? ?? ? ? ? //關(guān)閉日志鏈接
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持。
