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