首頁  >  文章  >  後端開發  >  php怎麼將錯誤日誌寫入文件

php怎麼將錯誤日誌寫入文件

青灯夜游
青灯夜游原創
2021-09-02 13:55:093213瀏覽

php將錯誤日誌寫入檔案的方法:1、在設定檔php.ini中,搜尋「error_log」項,設定日誌檔案的路徑;2、利用error_log()函數將錯誤日誌寫入在配置好的日誌檔案中,語法「error_log(需要記錄的錯誤訊息,0);」。

php怎麼將錯誤日誌寫入文件

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

如果想使用自己指定的檔案記錄錯誤日誌,一定要確保這個文件存放在文檔根目錄之外,以減少遭到攻擊的可能。並且該檔案一定要讓 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