成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

PHP錯(cuò)誤日志如何配置和使用

小編給大家分享一下PHP錯(cuò)誤日志如何配置和使用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站專注于察布查爾錫伯企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。察布查爾錫伯網(wǎng)站建設(shè)公司,為察布查爾錫伯等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

對(duì)于 PHP 開發(fā)者來(lái)說(shuō),一旦某個(gè)項(xiàng)目投入使用,應(yīng)該立即將配置文件 php.ini 中的 display_errors 選項(xiàng)關(guān)閉,以免因?yàn)檫@些錯(cuò)誤所透露的路徑、數(shù)據(jù)庫(kù)連接、數(shù)據(jù)表等信息而遭到黑客攻擊。

但是任何一個(gè)項(xiàng)目在投入使用后,都難免會(huì)有錯(cuò)誤出現(xiàn),那么如何記錄一些對(duì)開發(fā)者有用的錯(cuò)誤報(bào)告呢?這時(shí)候我們可以在單獨(dú)的文本文件中將錯(cuò)誤報(bào)告作為日志記錄。錯(cuò)誤日志的記錄,可以幫助開發(fā)人員或者管理人員查看系統(tǒng)是否存在問(wèn)題。

如果需要將程序中的錯(cuò)誤報(bào)告寫入錯(cuò)誤日志中,只要在 PHP 的配置文件中,將配置項(xiàng) log_errors 開啟即可。

錯(cuò)誤報(bào)告默認(rèn)會(huì)記錄到 Web 服務(wù)器的日志文件里,例如記錄到 Apache 服務(wù)器的錯(cuò)誤日志文件 error.log 中。當(dāng)然也可以將錯(cuò)誤日志記錄到指定的文件中或發(fā)送到系統(tǒng)的 syslog也就是系統(tǒng)日志中,那接下來(lái)我們就分別來(lái)看一下吧。

使用指定文件記錄錯(cuò)誤報(bào)告日志

如果想使用自己指定的文件記錄錯(cuò)誤日志,一定要確保這個(gè)文件存放在文檔根目錄之外,以減少遭到攻擊的可能。并且該文件一定要讓 PHP 腳本具有寫權(quán)限。首先我們需要將 php.ini 中的配置指令做如下修改:

  • log_errors = On ;決定日志語(yǔ)句記錄的位置

  • log_errors_max_len = 1024 ;設(shè)置每個(gè)日志項(xiàng)的最大長(zhǎng)度

  • error_reporting = E_ALL;將會(huì)向PHP報(bào)告發(fā)生的每個(gè)錯(cuò)誤

  • display_errors = Off;不顯示滿足上條 指令所定義規(guī)則的所有錯(cuò)誤報(bào)告

  • error_log = /usr/local/error.log ;指定產(chǎn)生的 錯(cuò)誤報(bào)告寫入的日志文件位置

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

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

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

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

其中需要注意的是:

$message表示需要記錄的錯(cuò)誤信息;$destination表示目標(biāo),也就是錯(cuò)誤消息被發(fā)送到的目的地。它的含義描述于以上,由 $message_type 參數(shù)所決定;$extra_headers表示額外的頭。當(dāng) $message_type 設(shè)置為 1 的時(shí)候使用。 該信息類型使用了 mail() 的同一個(gè)內(nèi)置函數(shù)。

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

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

  • 1:將 $message 發(fā)送到參數(shù) $destination 設(shè)置的郵件地址。 第四個(gè)參數(shù) $extra_headers 只有在這個(gè)類型里才會(huì)被用到;(2已經(jīng)被棄用了)

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

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

接下來(lái)我們通過(guò)示例看一下以登入 MySQL 數(shù)據(jù)庫(kù)為例,當(dāng)?shù)侨胧r(shí)記錄錯(cuò)誤信息。示例如下:

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

如果以登入Oracle數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題的處理為例,該函數(shù)的使用示例如下:

<?php
if(!Ora_Logon($username, $password)){
error_log("Oracle數(shù)據(jù)庫(kù)不可用!", 0); //將錯(cuò)誤消息寫入到操作系統(tǒng)日志中
 }
if(!($foo=allocate_new_foo()){
 error_log("不行!", 1, ". mydomain.com"); //發(fā)送到管理員郵箱中
 }
error_log("不行!", 2, "localhost:5000"); //發(fā)送到本機(jī)對(duì)應(yīng)5000端口的服務(wù)器中
error_log("不行!", 3, "/usr/local/errors.log"); //發(fā)送到指定的文件中
?>

代碼運(yùn)行之后就會(huì)在php.ini 配置文件中 error_log 一項(xiàng)所設(shè)置的目錄中生成對(duì)應(yīng)的錯(cuò)誤日志文件。接下來(lái)我們看一下錯(cuò)誤信息記錄到操作系統(tǒng)的日志里是什么情況。

錯(cuò)誤信息記錄到操作系統(tǒng)的日志里

錯(cuò)誤報(bào)告也可以被記錄到操作系統(tǒng)日志里,但不同的操作系統(tǒng)之間的日志管理也是不同的。以我們常見的windows舉例,Windows 上錯(cuò)誤將發(fā)送到事件日志里,可以通過(guò)事件查看器來(lái)查看。

那怎樣才能將錯(cuò)誤信息記錄到操作系統(tǒng)的日志里呢?如果希望將錯(cuò)誤報(bào)告寫到操作系統(tǒng)的日志里,將 php.ini 配置文件中 error_log 項(xiàng)的值設(shè)置為 syslog 即可。接下來(lái)我們看一下php.ini需要修改的指令有哪些:

修改error_reporting  =  E_ALL用來(lái)報(bào)告所發(fā)生的每個(gè)錯(cuò)誤;修改display_errors = Off 用來(lái)不顯示滿足上條指令所定義規(guī)則的所有錯(cuò)誤報(bào)告;修改log_errors = On用于決定日志語(yǔ)句記錄的位置;修改log_errors_max_len = 1024用于設(shè)置每個(gè)日志項(xiàng)的最大長(zhǎng)度;修改error_log = syslog用于指定產(chǎn)生的錯(cuò)誤報(bào)告寫入操作系統(tǒng)的日志里 。

雖然通過(guò)前面介紹的 error_log() 函數(shù),也可以向 syslog 中發(fā)送定制的消息,但在 PHP 中為這個(gè)特性提供了需要一起使用的 3 個(gè)專用函數(shù),如下所示:

  • openlog()函數(shù)

打開一個(gè)當(dāng)前系統(tǒng)中日志器的連接,為向系統(tǒng)插入日志消息做好準(zhǔn)備。并將提供的第一個(gè)字符串參數(shù)插入到每個(gè)日志消息中。

  • syslog()函數(shù)

該函數(shù)向系統(tǒng)日志中發(fā)送一個(gè)定制消息。需要兩個(gè)必選參數(shù),第一個(gè)參數(shù)通過(guò)指定一個(gè)常量定制消息的優(yōu)先級(jí)。第二個(gè)參數(shù)則是向系統(tǒng)日志中發(fā)送的定制消息,需要提供一個(gè)消息字符串,也可以是 PHP 引擎在運(yùn)行時(shí)提供的錯(cuò)誤字符串。

  • closelog()函數(shù)

該函數(shù)在向系統(tǒng)日志中發(fā)送完成定制消息以后調(diào)用,用來(lái)關(guān)閉由 openlog() 函數(shù)打開的日志連接。

那么接下來(lái)我們通過(guò)示例來(lái)看一下實(shí)際操作吧,示例如下:

<?php
    openlog("創(chuàng)新互聯(lián)", LOG_PID, LOG_USER);
    syslog(LOG_WARNING, "向 syslog 中發(fā)送定時(shí)消息,發(fā)送時(shí)間:".date("Y/m/d H:i:s"));
    closelog();
?>

以windows系統(tǒng)為例,打開“此電腦”右鍵選擇“管理”選項(xiàng),進(jìn)入計(jì)算機(jī)管理界面,找到圖示中應(yīng)用程序的選項(xiàng),就能夠看到我們自己定制的警告信息了。如下所示:

PHP錯(cuò)誤日志如何配置和使用

PHP錯(cuò)誤日志如何配置和使用

其中我們需要注意的是:

你所使用的Web服務(wù)器環(huán)境決定了是使用指定文件還是使用syslog記錄錯(cuò)誤日志。如果你可以控制 Web 服務(wù)器,使用 syslog 是最理想的,因?yàn)槟隳芾?syslog 的解析工具來(lái)查看和分析日志。

但如果你的網(wǎng)站在共享服務(wù)器的虛擬主機(jī)中運(yùn)行,就只有使用單獨(dú)的文本文件記錄錯(cuò)誤日志了。

以上是“PHP錯(cuò)誤日志如何配置和使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文名稱:PHP錯(cuò)誤日志如何配置和使用
本文URL:http://jinyejixie.com/article48/poshep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司Google、微信公眾號(hào)、自適應(yīng)網(wǎng)站、云服務(wù)器、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
青川县| 海兴县| 视频| 五寨县| 松滋市| 册亨县| 大丰市| 庆云县| 广元市| 民丰县| 吉隆县| 白银市| 资阳市| 平乐县| 榆树市| 上虞市| 中卫市| 三亚市| 当涂县| 蒲城县| 怀宁县| 汝城县| 襄汾县| 竹北市| 许昌市| 建水县| 固阳县| 庆元县| 炎陵县| 同仁县| 左权县| 乐平市| 安仁县| 新津县| 绥阳县| 同德县| 陵水| 武邑县| 曲沃县| 新巴尔虎右旗| 黑水县|