PHP中Too few arguments to function的問題及解決
PHP Too few arguments to function的解決
過去自定義函數(shù)的時(shí)候如果參數(shù)不足,則會拋出一個(gè)警告,但是在7.1開始,被提升為了錯(cuò)誤異常。
function test($param){} test();
這樣調(diào)用test,在7.1便無法執(zhí)行,此時(shí)我們需要給param賦一個(gè)默認(rèn)值,即使是空值,這樣,調(diào)用的時(shí)候就不會在報(bào)錯(cuò),同時(shí)也提醒我們需要養(yǎng)成賦默認(rèn)值的習(xí)慣。
PHP學(xué)習(xí)筆記-PHP報(bào)錯(cuò)處理
錯(cuò)誤報(bào)告級別
PHP程序的錯(cuò)誤發(fā)生一般歸屬于下列三個(gè)領(lǐng)域:
- 語法錯(cuò)誤:語法錯(cuò)誤最常見,并且也容易修復(fù)。如:代碼中遺漏一個(gè)分號。這類錯(cuò)誤會阻止腳本的執(zhí)行。
- 運(yùn)行時(shí)錯(cuò)誤:這種錯(cuò)誤一般不會阻止PHP腳本的執(zhí)行,但會阻止當(dāng)前要做的事情。輸出一條錯(cuò)誤,但php腳本繼續(xù)執(zhí)行
- 邏輯錯(cuò)誤:這種錯(cuò)誤最麻煩,既不阻止腳本執(zhí)行,也不輸出錯(cuò)誤消息。
調(diào)整錯(cuò)誤報(bào)告級別
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)告級別。 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腳本可以通過error_reporting( )函數(shù)動(dòng)態(tài)設(shè)置錯(cuò)誤報(bào)告級別。如:error_reporting(E_ALL);
自定義錯(cuò)誤處理
自定義錯(cuò)誤報(bào)告的處理方式,可以完全繞過標(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)的問題
- 可以屏蔽錯(cuò)誤。
- 可以控制錯(cuò)誤的輸出。
- 可以作為調(diào)試工具。
使用set_error_handler()函數(shù)來設(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 ? ? ? ? ??? ??? ?//決定日志語句記錄的位置 ?? ? log_errors_max_log=1024?? ?// 每個(gè)日志項(xiàng)的最大長度 ?? ? error_log=G:/myerror.log?? ?//指定錯(cuò)誤寫進(jìn)的文件
2)使用函數(shù):在php文件中使用error_log()來記錄日志,就可以將信息寫入到myerror.log文件中
如:
b.錯(cuò)誤日志記錄到操作系統(tǒng)的日志里
【查看日志:如windows系統(tǒng),通過右擊“我的電腦”-> 選擇管理選項(xiàng)->在系統(tǒng)工具菜單中選擇事件查看器->在應(yīng)用程序選項(xiàng)中即可看到日志了?!?/p>
1)先配置PHP.ini文件中
error_reporting = E_ALL ? //將向PHP發(fā)送每個(gè)錯(cuò)誤 ?? ? display_errors=Off ?? ? ? ? //不顯示錯(cuò)誤報(bào)告 ?? log_errors=On ?? ??? ? ? ? //決定日志語句記錄的位置。 ?? ? log_errors_max_log=1024 ? // 每個(gè)日志項(xiàng)的最大長度 ?? ? error_log=syslog ?? ? ? ? //指定到系統(tǒng)日志中。
2)使用四個(gè)函數(shù)來記錄日志
define_syslog_variables();//為系統(tǒng)日志初始化配置 ?? ? openlog();?? ??? ? ? ? //打開一個(gè)日志鏈接 ?? syslog();?? ??? ? ? ? //發(fā)送一條日志記錄 ?? ? closelog();?? ? ? ?? ? ? ? //關(guān)閉日志鏈接
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP實(shí)踐教程之過濾、驗(yàn)證、轉(zhuǎn)義與密碼詳解
我們在開發(fā)應(yīng)用時(shí),一般有個(gè)約定:不要信任任何來自不受自己控制的數(shù)據(jù)源中的數(shù)據(jù)。所以這個(gè)時(shí)候就用到了這篇文章介紹的內(nèi)容,本文主要給大家介紹了關(guān)于PHP實(shí)踐教程之過濾、驗(yàn)證、轉(zhuǎn)義與密碼的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07php session_start()出錯(cuò)原因分析及解決方法
本文是對php中session_start()的出錯(cuò)原因及解決方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10PHP實(shí)現(xiàn)微信模擬登陸并給用戶發(fā)送消息的方法【文字,圖片,圖文】
這篇文章主要介紹了PHP實(shí)現(xiàn)微信模擬登陸并給用戶發(fā)送消息的方法,可實(shí)現(xiàn)發(fā)送文字、圖片及圖文的功能,涉及php針對微信接口的相關(guān)操作技巧,需要的朋友可以參考下2017-06-06thinkPHP5實(shí)現(xiàn)的查詢數(shù)據(jù)庫并返回json數(shù)據(jù)實(shí)例
這篇文章主要介紹了thinkPHP5實(shí)現(xiàn)的查詢數(shù)據(jù)庫并返回json數(shù)據(jù)功能,結(jié)合實(shí)例形式分析了thinkPHP5數(shù)據(jù)庫查詢及json格式數(shù)據(jù)簡單操作技巧,需要的朋友可以參考下2017-10-10