您的位置:首頁技術文章
文章詳情頁

PHP中Too few arguments to function的問題及解決

瀏覽:117日期:2022-06-06 16:22:53
目錄
  • 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();?? ? ? ?? ? ? ? //關閉日志鏈接

    總結

    以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。

    標簽: PHP
    国产综合久久一区二区三区