首頁 >後端開發 >PHP問題 >php錯誤日誌有什麼用

php錯誤日誌有什麼用

青灯夜游
青灯夜游原創
2022-02-21 19:27:292388瀏覽

在php中,錯誤日誌用於記錄程式運行時的出錯訊息,可以幫助開發人員或管理人員查看系統是否有問題;開發人員和維護人員也可以利用錯誤日誌對系統進行偵錯和維護。

php錯誤日誌有什麼用

本教學操作環境:windows7系統、PHP7.1版、DELL G3電腦

php錯誤日誌有什麼用

錯誤日誌用於記錄程式運行時的出錯訊息。

錯誤日誌的記錄,可以幫助開發人員或管理者查看系統是否有問題。程式設計人員和維護人員等可以利用錯誤日誌對系統進行偵錯和維護。

如果需要將程式中的錯誤報告寫入錯誤日誌中,只要在 PHP 的設定檔中,將設定項 log_errors 開啟即可。

錯誤報告預設會記錄到 Web 伺服器的日誌檔案裡,例如記錄到 Apache 伺服器的錯誤日誌檔案 error.log 中。當然也可以將錯誤日誌記錄到指定的檔案中。

使用指定的文件記錄錯誤報告日誌

如果想使用自己指定的文件記錄錯誤日誌,一定要確保這個文件存放在文檔根目錄之外,以減少遭到攻擊的可能。並且該檔案一定要讓 PHP 腳本具有寫入權限。假設在 Linux 作業系統中,將 /usr/local/ 目錄下的 error.log 文件作為錯誤日誌文件,並設定 Web 伺服器進程使用者俱有寫入的權限。然後在 PHP 的設定檔中,將 error_log 指令的值設定為這個錯誤日誌檔案的絕對路徑。

需要將 php.ini 中的設定指令做如下修改:

error_reporting  =  E_ALL                             // 将会向PHP报告发生的每个错误  
display_errors = Off                                     // 不显示满足上条 指令所定义规则的所有错误报告  
log_errors = On                                           // 决定日志语句记录的位置  
log_errors_max_len = 1024                         // 设置每个日志项的最大长度  
error_log = E:/php_log/php_error.log         // 指定产生的错误报告写入的日志文件位置

PHP 的設定檔按上面的方式設定完成以後,並重新啟動 Web 伺服器。這樣,在執行 PHP 的任何腳本檔案時,產生的所有錯誤報告都不會在瀏覽器中顯示,而是記錄在自己指定的錯誤日誌 E:/php_log/php_error.log 中。

此外,不僅可以記錄滿足 error_reporting 所定義規則的所有錯誤,還可以使用 PHP 中的 error_log() 函數把錯誤訊息傳送到 web 伺服器的錯誤日誌或到一個檔案裡。

error_log() 函數的原型如下所示:

error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] ) : bool

參數說明如下:

  • $message:需要記錄的錯誤訊息;
  • #$message_type:設定錯誤應該要傳送到何處。可能的資訊類型有以下幾個:
    • 0:(預設值)將$message 傳送到PHP 的系統日誌,使用作業系統的日誌機製或一個文件,取決於設定檔中error_log 設定了什麼;
    • 1:將$message 傳送到參數$destination 設定的郵件地址。第四個參數$extra_headers 只有在這個類型裡才會被用到;
    • 2:(已廢棄)不再是一個選項;
    • 3:$message 被送到位置為$destination 的檔案裡。字元 $message 不會預設被當作新的一行;
    • 4:將 $message 直接傳送到 SAPI 的日誌處理程序中。
  • $destination:目標,也就是錯誤訊息被傳送到的目的地。它的意義描述於以上,由 $message_type 參數決定;
  • $extra_headers:額外的頭。當 $message_type 設定為 1 的時候使用。此資訊類型使用了 mail() 的同一個內建函數。

範例:

以登入 Mysql 資料庫為例,當登入失敗時記錄錯誤訊息。

<?php
    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
    if (!$link) {
        error_log(&#39;Mysql 数据库连接失败!&#39;,0);
        exit();
    }
?>

運行上面的程式碼,會在php.ini 設定檔中error_log 一項所設定的目錄中產生對應的錯誤日誌文件,檔案內容如下:

[08-May-2020 13:17:31 PRC] PHP Warning:  mysqli_connect(): (HY000/1045): Access denied for user &#39;my_user&#39;@&#39;localhost&#39; (using password: YES) in D:\WWW\index.php on line 2
[08-May-2020 13:17:31 PRC] Mysql 数据库连接失败!

推薦學習:《 PHP影片教學

以上是php錯誤日誌有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn