溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php如何將錯誤日志寫入文件

發(fā)布時間:2021-09-02 14:24:51 來源:億速云 閱讀:205 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)php如何將錯誤日志寫入文件的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

php將錯誤日志寫入文件的方法:1、在配置文件php.ini中,搜索“error_log”項,配置日志文件的路徑;2、利用error_log()函數(shù)將錯誤日志寫入配置好的日志文件中,語法“error_log(需要記錄的錯誤信息,0);”。

本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦

如果想使用自己指定的文件記錄錯誤日志,一定要確保這個文件存放在文檔根目錄之外,以減少遭到攻擊的可能。并且該文件一定要讓 PHP 腳本具有寫權(quán)限。假設(shè)在 Linux 操作系統(tǒng)中,將 /usr/local/ 目錄下的 error.log 文件作為錯誤日志文件,并設(shè)置 Web 服務(wù)器進(jìn)程用戶具有寫的權(quán)限。然后在 PHP 的配置文件中,將 error_log 指令的值設(shè)置為這個錯誤日志文件的絕對路徑。

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

error_reporting  =  E_ALL                             // 將會向PHP報告發(fā)生的每個錯誤  
display_errors = Off                                     // 不顯示滿足上條 指令所定義規(guī)則的所有錯誤報告  
log_errors = On                                           // 決定日志語句記錄的位置  
log_errors_max_len = 1024                         // 設(shè)置每個日志項的最大長度  
error_log = E:/php_log/php_error.log         // 指定產(chǎn)生的錯誤報告寫入的日志文件位置

PHP 的配置文件按上面的方式設(shè)置完成以后,并重新啟動 Web 服務(wù)器。這樣,在執(zhí)行 PHP 的任何腳本文件時,產(chǎn)生的所有錯誤報告都不會在瀏覽器中顯示,而會記錄在自己指定的錯誤日志 E:/php_log/php_error.log 中。

此外,不僅可以記錄滿足 error_reporting 所定義規(guī)則的所有錯誤,而且還可以使用 PHP 中的 error_log() 函數(shù)把錯誤信息發(fā)送到 web 服務(wù)器的錯誤日志或者到一個文件里。

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

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

參數(shù)說明如下:

  • $message:需要記錄的錯誤信息;

  • $message_type:設(shè)置錯誤應(yīng)該發(fā)送到何處??赡艿男畔㈩愋陀幸韵聨讉€:

    • 0:(默認(rèn)值)將 $message 發(fā)送到 PHP 的系統(tǒng)日志,使用操作系統(tǒng)的日志機制或者一個文件,取決于配置文件中 error_log 設(shè)置了什么;

    • 1:將 $message 發(fā)送到參數(shù) $destination 設(shè)置的郵件地址。 第四個參數(shù) $extra_headers 只有在這個類型里才會被用到;

    • 2:(已廢棄)不再是一個選項;

    • 3:$message 被發(fā)送到位置為 $destination 的文件里。字符 $message 不會默認(rèn)被當(dāng)做新的一行;

    • 4:將 $message 直接發(fā)送到 SAPI 的日志處理程序中。

  • $destination:目標(biāo),也就是錯誤消息被發(fā)送到的目的地。它的含義描述于以上,由 $message_type 參數(shù)所決定;

  • $extra_headers:額外的頭。當(dāng) $message_type 設(shè)置為 1 的時候使用。 該信息類型使用了 mail() 的同一個內(nèi)置函數(shù)。

【示例】以登入 Mysql 數(shù)據(jù)庫為例,當(dāng)?shù)侨胧r記錄錯誤信息。

<?php
    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
    if (!$link) {
        error_log('Mysql 數(shù)據(jù)庫連接失??!',0);
        exit();
    }
?>

運行上面的代碼,會在 php.ini 配置文件中 error_log 一項所設(shè)置的目錄中生成對應(yīng)的錯誤日志文件,文件內(nèi)容如下:

[08-May-2020 13:17:31 PRC] PHP Warning:  mysqli_connect(): (HY000/1045): Access denied for user 'my_user'@'localhost' (using password: YES) in D:\WWW\index.php on line 2
[08-May-2020 13:17:31 PRC] Mysql 數(shù)據(jù)庫連接失??!

感謝各位的閱讀!關(guān)于“php如何將錯誤日志寫入文件”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI