搜尋
php輸出日誌Apr 17, 2018 am 09:02 AM
php紀錄輸出

這篇文章介紹的內容是關於php輸出日誌,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

轉自https ://www.cnblogs.com/yszr/p/8489433.html
error_log('你要輸出的資訊', 3, 'E:\work\jiajiayue\Application\Api\Controller\1.txt') ;die;
php error_log記錄日誌的使用方法和配置


對於PHP開發者來說,一旦某個產品投入使用,應該立即將display_errors選項關閉,以免因為這些錯誤所透露的路徑、資料庫連線、資料表等資訊而遭到駭客攻擊。但是,任何一個產品在投入使用後,都難 免會有錯誤出現,那麼如何記錄一些對開發者有用的錯誤報告呢?我們可以在單獨的文字檔案中將錯誤報告作為日誌記錄。錯誤日誌的記錄,可以幫助開發人員或 管理人員查看系統是否有問題。如果需要將程式中的錯誤報告寫入錯誤日誌中,只要在PHP的設定檔中,將設定指令log_errors開啟即可。錯誤 報告預設就會記錄到Web伺服器的日誌檔案裡,例如記錄到Apache伺服器的錯誤記錄檔error.log中。當然也可以記錄錯誤日誌到指定的檔案或傳送給系統syslog,分別介紹如下: 


1、使用指定的檔案記錄錯誤報告日誌


使用指定的文件記錄錯誤報告日誌使用指定的文件記錄錯誤報告日誌使用指定的文件記錄錯誤報告日誌如果使用自己指定的文件記錄錯誤日誌,一定要確保將這個文件存放在文檔根目錄之外,以減少遭到攻擊的可能。且該檔案一定要讓PHP腳本的執行使用者(Web伺服器進程擁有者)具有寫入權限。假設在Linux操作系 統中,將/usr/local/目錄下的error.log文件作為錯誤日誌文件,並設定Web伺服器進程使用者俱有寫的權限。然後在PHP的設定檔中, 將error_log指令的值設定為這個錯誤日誌檔案的絕對路徑。
需要將php.ini中的設定指令做以下修改: 
1. error_reporting  =  E_ALL                   ;將會向PHPors    ;不顯示滿足上條指令所有定義規則的所有錯誤回報  
3. log_errors = On                             ;決定記錄語句所記錄的位置  ;設定每個日誌項目的最大長度  
5. error_log = E:/php_log /php_error.log              ;指定產生的錯誤報告寫入的日誌檔案位置 
PHP 的設定檔以上面的方式設定完成以後,並重新啟動Web伺服器。這樣,在執行PHP的任何腳本檔案時,所產生的所有錯誤報告都不會在瀏覽器中顯示,而會記 錄在自己指定的錯誤日誌/usr/local/error.log中。此外,不僅可以記錄滿足error_reporting所定義規則的所有錯誤,還可以使用PHP中的error_log()函數,送出一個使用者自訂的錯誤訊息。


此函數的原型如下:

 1. bool error_log ( string message [, int message_type  [, string destination [, string extra_headers]]] )  

#此函數會送出錯誤訊息到Web伺服器的錯誤日誌檔案、某個TCP伺服器或到指定檔案中。此函數執行成功則傳回TRUE,失敗則傳回FALSE。第一個參數 message 是必選項,即為要送出的錯誤訊息。如果僅使用此參數,則會依設定檔php.ini中所設定的位置處傳送訊息。第二個參數message_type為整數值:0表示送到作業系統的日誌中;1則使用PHP的Mail()函數,傳送訊息到某E-mail處,第四個參數extra_headers也會用到;2則將錯誤訊息送到TCP 伺服器中,此時第三個參數destination表示目的地IP及Port;3則將訊息儲存到檔案destination。


如果以登入Oracle資料庫出現問題的處理為例,函數的使用如下所示: 



##

1. <?php      
2.     if(!Ora_Logon($username, $password)){     
 3.         error_log("Oracle数据库不可用!", 0);        //将错误消息写入到操作系统日志中   
4.     }   
5.     if(!($foo=allocate_new_foo()){   
6.         error_log("出现*烦了!", 1, ". mydomain.com");   //发送到管理员邮箱中   
7.     }  
8.     error_log("搞砸了!",   2,   "localhost:5000");     //发送到本机对应5000端口的服务器中   
9.     error_log("搞砸了!",   3,   "/usr/local/errors.log");  //发送到指定的文件中   
10. ?>


 


2、錯誤訊息記錄到作業系統的日誌裡


錯誤訊息記錄到作業系統的日誌裡錯誤訊息記錄到作業系統的日誌裡錯誤訊息記錄到作業系統的日誌裡錯誤報告也可以被記錄到作業系統日誌裡,但不同的作業系統之間的日誌管理有點區別。在Linux上錯誤語句將送到syslog,而在Windows上錯誤將傳送到事件日誌裡。如果你不熟悉syslog,起碼要知 道它是基於UNIX的日誌工具,它提供了一個API來記錄與系統和應用程式執行有關的訊息。 Windows事件日誌實際上與UNIX的syslog相同, 這些日誌通常可以透過事件檢視器來查看。如果希望將錯誤報告寫到作業系統的日誌裡,可以在設定檔中將error_log指令的值設為syslog。


具體需要在php.ini中修改的設定指令如下所示: 


#
1. error_reporting  =  E_ALL                   ;将会向PHP报告发生的每个错误   
2. display_errors = Off                            ;不显示 满足上条指令所定义规则的所有错误报告   
3. log_errors = On                             ;决定日志语句记录的位置   
4. log_errors_max_len = 1024                   ;设置每个日志项的最大长度   
5. error_log = syslog                          ;指定产生的错误报告写入操作系统的日志里




除了一般的錯誤輸出之外,PHP還允許向系統syslog中發送自訂的訊息。雖然透過前面介紹的error_log()函數,也可以向syslog中發送客製化的訊息,但在PHP中為這個特性提供了4個需要一起使用的專用函數。


#分別介紹如下: 


define_syslog_variables() 


在使用openlog()、syslog及closelog()三個函數之前必須先呼叫該函數。因為在呼叫函數時,它會根據現在的系統環境為下面三個函數初步使用化一些必需的常數。 


openlog() 


開啟一個和目前系統中日誌器的連接,為向系統插入日誌訊息做好準備。並將提供的第一個字串參數插入到每個日誌訊息中,該函數還需要指定兩個將在日誌上下文中使用的參數,可以參考官方文件使用。 


 syslog()


此 函數傳送一個客製化訊息給系統日誌。需要兩個必選參數,第一個參數透過指定一個常數自訂訊息的優先順序。例如LOG_WARNING表示一般的警 告,LOG_EMERG表示嚴重地可以預示著系統崩潰的問題,一些其他的表示嚴重程度的常數可以參考官方文件使用。第二個參數則是傳送給系統日誌的客製化 訊息,需要提供一個訊息字串,也可以是PHP引擎在運作時提供的錯誤字串。 


closelog()


函數在向系統日誌中發送完成自訂訊息以後調用,關閉openlog()函數開啟的日誌連線。


 


如果在設定檔中,已經開啟向syslog發送自訂訊息的指令,就可以使用前面介紹的四個函數傳送一個警告訊息到系統日誌中,並透過系統中的syslog解析工具,查看和分析由PHP程式發送的自訂訊息,如下所示: 


1.  
2.     define_syslog_variables();   
3.     openlog("PHP5", LOG_PID , LOG_USER);   
4.     syslog(LOG_WARNING, "警告报告向syslog中发送的演示, 警告时间:".date("Y/m/d H:i:s"));  
5.     closelog();   
6. ?>

 以Windows系統為例,透過右鍵"我的電腦"選擇管理選項,然後到系統工具選單中,選擇事件檢視器,再找到應用程式選項,就可以看到我們自己自訂的警告訊息了。上面這段程式碼會在系統的syslog檔案中,產生類似下面的訊息,是事件的一部分: 


      1. PHP5[3084], 警告報告傳送給syslog發送的示範,警告時間:2009/03/26 04:09:11.  


使用指定的檔案還是使用syslog記錄錯誤日誌,取決於你所在的Web伺服器環境。如果你可以控制Web伺服器,使用syslog是最理想的,因為你能利 用syslog的解析工具來檢視和分析日誌。但如果你的網站在共享伺服器的虛擬主機中運行,就只有使用單獨的文字檔案記錄錯誤日誌了。
           

相關建議:

php輸出所有時區清單

php 寫入日誌函數

php實作一個日誌功能

以上是php輸出日誌的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具