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