溫馨提示×

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

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

開發(fā)模式與產(chǎn)品模式下的PHP報(bào)錯(cuò)應(yīng)該如何處理

發(fā)布時(shí)間:2020-05-06 11:03:26 來(lái)源:億速云 閱讀:245 作者:小新 欄目:編程語(yǔ)言

程序報(bào)錯(cuò)總是在所難免,盡管我們書寫代碼時(shí)已經(jīng)格外小心。那么開發(fā)模式與產(chǎn)品模式下的PHP報(bào)錯(cuò)應(yīng)該如何處理?相信有很多人都不太了解,今天小編為了讓大家更加了解,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。

在開發(fā)php程序時(shí),我們希望遇到php報(bào)錯(cuò),可以第一時(shí)間展示給我們,以便于調(diào)試。當(dāng)程序開發(fā)完成,成為正式產(chǎn)品時(shí),我們希望將沒有預(yù)測(cè)到的報(bào)錯(cuò)信息記錄到錯(cuò)誤日志中,而不是將這些報(bào)錯(cuò)信息展示給用戶,因?yàn)橛脩魳O有可能利用這些暴露出腳本路徑、數(shù)據(jù)庫(kù)信息或其他的報(bào)錯(cuò)信息進(jìn)行一些破壞性的黑客行動(dòng)。

PHP 的錯(cuò)誤處理

php腳本在執(zhí)行過程中遇到錯(cuò)誤將以報(bào)錯(cuò)的形式處理,有些錯(cuò)誤在報(bào)錯(cuò)之后會(huì)終止腳本繼續(xù)執(zhí)行,而有些不會(huì),具體請(qǐng)參閱手冊(cè)。

php的報(bào)錯(cuò)處理方式根據(jù)以下配置選項(xiàng)進(jìn)行,這些配置可以在代碼中聲明以設(shè)置,也可以在php.ini文件中設(shè)置。如果不需要經(jīng)常改動(dòng)這些配置,還是建議在php.ini文件中設(shè)置,以使你的代碼更清爽簡(jiǎn)潔。

# 是否打印錯(cuò)誤信息到瀏覽器/命令行界面
# 開發(fā)模式下建議開啟,產(chǎn)品模式下強(qiáng)烈建議關(guān)閉
ini_set('display_errors', 'On');
# 是否記錄錯(cuò)誤信息到日志
# 開發(fā)模式和產(chǎn)品模式下都建議開啟
ini_set('log_errors', 'On');
# 指定錯(cuò)誤信息日志文件,若開啟了 log_errors 選項(xiàng),記得指定日志文件位置
# 要確保執(zhí)行 php 腳本的系統(tǒng)用戶擁有該文件的 write 權(quán)限,否則日志無(wú)法被寫入
ini_set('error_log', '/usr/local/php/errors.log');
# 該選項(xiàng)用以設(shè)定錯(cuò)誤報(bào)告的等級(jí)
# 等同于 error_reporting(E_ALL) 
# 無(wú)論開發(fā)模式還是產(chǎn)品模式下都建議開到E_ALL(報(bào)告所有的錯(cuò)誤信息)
# 產(chǎn)品模式下也需要設(shè)置此選項(xiàng),因?yàn)殛P(guān)閉了 display_errors 并開啟了 log_errors
# 所以瀏覽器/命令行界面不會(huì)因此暴露報(bào)錯(cuò)信息
ini_set('error_reporting', E_ALL);

除此之外,php 還給開發(fā)者提供了在代碼中將自定義的錯(cuò)誤信息記錄到錯(cuò)誤日志文件的內(nèi)置函數(shù):

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

必選參數(shù)是 message ,調(diào)用此函數(shù)會(huì)將 message 寫入 php.ini 中定義的 error_log 文件中。

用戶自定義的錯(cuò)誤處理

另外,用戶可以通過函數(shù):

mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )

以自定義的方式來(lái)處理腳本運(yùn)行時(shí)出現(xiàn)的錯(cuò)誤,如果用戶注冊(cè)了 error_handler 并指定了 error_types ,那么當(dāng)發(fā)生這些 error_types 的錯(cuò)誤時(shí),將繞過 php的標(biāo)準(zhǔn)錯(cuò)誤處理程序

(也就是說既不會(huì)輸出錯(cuò)誤信息,也不會(huì)記錄錯(cuò)誤信息日志),而是執(zhí)行 error_handler 中的處理程序。

關(guān)于開發(fā)模式與產(chǎn)品模式下的PHP報(bào)錯(cuò)應(yīng)該如何處理就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

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

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

AI