摘要:當程序開發(fā)完成,成為正式產(chǎn)品時,我們希望將沒有預(yù)測到的報錯信息記錄到錯誤日志中,而不是將這些報錯信息展示給用戶,因為用戶極有可能利用這些暴露出腳本路徑數(shù)據(jù)庫信息或其他的報錯信息進行一些破壞性的黑客行動。
程序報錯總是在所難免,盡管我們書寫代碼時已經(jīng)格外小心。
在開發(fā)php程序時,我們希望遇到php報錯,可以第一時間展示給我們,以便于調(diào)試。當程序開發(fā)完成,成為正式產(chǎn)品時,我們希望將沒有預(yù)測到的報錯信息記錄到錯誤日志中,而不是將這些報錯信息展示給用戶,因為用戶極有可能利用這些暴露出腳本路徑、數(shù)據(jù)庫信息或其他的報錯信息進行一些破壞性的黑客行動。
PHP 的錯誤處理php腳本在執(zhí)行過程中遇到錯誤將以報錯的形式處理,有些錯誤在報錯之后會終止腳本繼續(xù)執(zhí)行,而有些不會,具體請參閱手冊。
php的報錯處理方式根據(jù)以下配置選項進行,這些配置可以在代碼中聲明以設(shè)置,也可以在php.ini文件中設(shè)置。如果不需要經(jīng)常改動這些配置,還是建議在php.ini文件中設(shè)置,以使你的代碼更清爽簡潔。
# 是否打印錯誤信息到瀏覽器/命令行界面 # 開發(fā)模式下建議開啟,產(chǎn)品模式下強烈建議關(guān)閉 ini_set("display_errors", "On"); # 是否記錄錯誤信息到日志 # 開發(fā)模式和產(chǎn)品模式下都建議開啟 ini_set("log_errors", "On"); # 指定錯誤信息日志文件,若開啟了 log_errors 選項,記得指定日志文件位置 # 要確保執(zhí)行 php 腳本的系統(tǒng)用戶擁有該文件的 write 權(quán)限,否則日志無法被寫入 ini_set("error_log", "/usr/local/php/errors.log"); # 該選項用以設(shè)定錯誤報告的等級 # 等同于 error_reporting(E_ALL) # 無論開發(fā)模式還是產(chǎn)品模式下都建議開到E_ALL(報告所有的錯誤信息) # 產(chǎn)品模式下也需要設(shè)置此選項,因為關(guān)閉了 display_errors 并開啟了 log_errors # 所以瀏覽器/命令行界面不會因此暴露報錯信息 ini_set("error_reporting", E_ALL);
除此之外,php 還給開發(fā)者提供了在代碼中將自定義的錯誤信息記錄到錯誤日志文件的內(nèi)置函數(shù):
bool error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] )
必選參數(shù)是 message ,調(diào)用此函數(shù)會將 message 寫入 php.ini 中定義的 error_log 文件中。
用戶自定義的錯誤處理另外,用戶可以通過函數(shù):
mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )
以自定義的方式來處理腳本運行時出現(xiàn)的錯誤,如果用戶注冊了 error_handler 并指定了 error_types ,那么當發(fā)生這些 error_types 的錯誤時,將繞過 php的標準錯誤處理程序(也就是說既不會輸出錯誤信息,也不會記錄錯誤信息日志),而是執(zhí)行 error_handler 中的處理程序。該函數(shù)的詳細用法請參閱手冊,
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/28633.html
摘要:利用工廠方法模式,請求者發(fā)出請求,而不具體創(chuàng)建產(chǎn)品。正是因為這個原因,使用工廠方法模式可以簡化復(fù)雜的創(chuàng)建過程,關(guān)鍵就在于它在維持一個公共接口。 創(chuàng)建型設(shè)計模式 包括以下五種: 抽象工廠 生成器 工廠方法 原型 單例 我們選擇工廠方法和原型模式作為將用PHP實現(xiàn)的創(chuàng)建型設(shè)計的例子工廠方法模式是這5個設(shè)計模式中唯一的一種類設(shè)計模式原型模式屬于對象類模式,可以使用PHP_clone方法實...
摘要:下載安裝下載,,下載好后可以看到目錄中有和,是腳手架搭建的前端模塊,里面是框架本地域名后端配置新建一個數(shù)據(jù)庫,將下的導(dǎo)進新建的數(shù)據(jù)庫,然后配置下的配好后打開瀏覽器訪問,如果看到接口的字樣就是成功了前端配置打開將改成后臺地址配置完后在中運行 下載安裝 下載vuethink,git clone https://github.com/honraytech/VueThink.git,下載好后可...
摘要:前言這里筑夢師是一名正在努力學習的開發(fā)工程師目前致力于全棧方向的學習希望可以和大家一起交流技術(shù)共同進步用簡書記錄下自己的學習歷程個人學習方法分享本文目錄更新說明目錄學習方法學習態(tài)度全棧開發(fā)學習路線很長知識拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學習的iOS開發(fā)工程師,目前致力于全棧方向的學習,希望可以和大家一起交流技術(shù),共同進步,用簡書記錄下自己的學習歷程...
閱讀 792·2021-09-22 16:01
閱讀 2085·2021-08-20 09:37
閱讀 1693·2019-08-30 15:54
閱讀 1689·2019-08-30 15:44
閱讀 826·2019-08-28 18:23
閱讀 3005·2019-08-26 12:17
閱讀 1005·2019-08-26 11:56
閱讀 1539·2019-08-23 16:20