搜尋

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代碼:減少內存使用和執行時間May 10, 2025 am 12:04 AM

TooptimizePHPcodeforreducedmemoryusageandexecutiontime,followthesesteps:1)Usereferencesinsteadofcopyinglargedatastructurestoreducememoryconsumption.2)LeveragePHP'sbuilt-infunctionslikearray_mapforfasterexecution.3)Implementcachingmechanisms,suchasAPC

PHP電子郵件:分步發送指南PHP電子郵件:分步發送指南May 09, 2025 am 12:14 AM

phpisusedforsendendemailsduetoitsignegrationwithservermailservicesand andexternalsmtpproviders,自動化intifications andMarketingCampaigns.1)設置設置yourphpenvenvironnvironnvironmentwithaweberswithawebserverserververandphp,確保themailfunctionisenabled.2)useabasicscruct

如何通過PHP發送電子郵件:示例和代碼如何通過PHP發送電子郵件:示例和代碼May 09, 2025 am 12:13 AM

發送電子郵件的最佳方法是使用PHPMailer庫。 1)使用mail()函數簡單但不可靠,可能導致郵件進入垃圾郵件或無法送達。 2)PHPMailer提供更好的控制和可靠性,支持HTML郵件、附件和SMTP認證。 3)確保正確配置SMTP設置並使用加密(如STARTTLS或SSL/TLS)以增強安全性。 4)對於大量郵件,考慮使用郵件隊列系統來優化性能。

高級PHP電子郵件:自定義標題和功能高級PHP電子郵件:自定義標題和功能May 09, 2025 am 12:13 AM

CustomHeadersheadersandAdvancedFeaturesInphpeMailenHanceFunctionalityAndreliability.1)CustomHeadersheadersheadersaddmetadatatatatataatafortrackingandCategorization.2)htmlemailsallowformattingandttinganditive.3)attachmentscanmentscanmentscanbesmentscanbestmentscanbesentscanbesentingslibrarieslibrarieslibrariesliblarikelikephpmailer.4)smtppapapairatienticationaltication enterticationallimpr

使用PHP和SMTP發送電子郵件的指南使用PHP和SMTP發送電子郵件的指南May 09, 2025 am 12:06 AM

使用PHP和SMTP發送郵件可以通過PHPMailer庫實現。 1)安裝並配置PHPMailer,2)設置SMTP服務器細節,3)定義郵件內容,4)發送郵件並處理錯誤。使用此方法可以確保郵件的可靠性和安全性。

使用PHP發送電子郵件的最佳方法是什麼?使用PHP發送電子郵件的最佳方法是什麼?May 08, 2025 am 12:21 AM

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

PHP中依賴注入的最佳實踐PHP中依賴注入的最佳實踐May 08, 2025 am 12:21 AM

使用依賴注入(DI)的原因是它促進了代碼的松耦合、可測試性和可維護性。 1)使用構造函數注入依賴,2)避免使用服務定位器,3)利用依賴注入容器管理依賴,4)通過注入依賴提高測試性,5)避免過度注入依賴,6)考慮DI對性能的影響。

PHP性能調整技巧和技巧PHP性能調整技巧和技巧May 08, 2025 am 12:20 AM

phpperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovessetimes.2)優化

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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具