CodeIgniter 錯(cuò)誤處理

2018-07-21 15:38 更新

錯(cuò)誤處理

CodeIgniter 可以通過(guò)下面介紹的方法來(lái)在你的應(yīng)用程序中生成錯(cuò)誤報(bào)告。 另外,還有一個(gè)錯(cuò)誤日志類(lèi)用來(lái)將錯(cuò)誤或調(diào)試信息保存到文本文件中。

注解
CodeIgniter 默認(rèn)將顯示所有的 PHP 錯(cuò)誤,你可能在開(kāi)發(fā)結(jié)束之后 改變?cè)撔袨?。在你?index.php 文件的頂部有一個(gè) error_reporting() 函數(shù),通過(guò)它可以修改錯(cuò)誤設(shè)置。當(dāng)發(fā)生錯(cuò)誤時(shí),禁用錯(cuò)誤報(bào)告 并不會(huì)阻止向日志文件寫(xiě)入錯(cuò)誤信息。

和 CodeIgniter 中的大多數(shù)系統(tǒng)不同,錯(cuò)誤函數(shù)是一個(gè)可以在整個(gè)應(yīng)用程序中 使用的簡(jiǎn)單接口,這讓你在使用該函數(shù)時(shí)不用擔(dān)心類(lèi)或方法的作用域的問(wèn)題。

當(dāng)任何一處核心代碼調(diào)用 exit() 時(shí),CodeIgniter 會(huì)返回一個(gè)狀態(tài)碼。 這個(gè)狀態(tài)碼和 HTTP 狀態(tài)碼不同,是用來(lái)通知其他程序 PHP 腳本是否成功運(yùn)行的, 如果運(yùn)行不成功,又是什么原因?qū)е铝四_本退出。狀態(tài)碼的值被定義在 application/config/constants.php 文件中。狀態(tài)碼在 CLI 形式下非常有用, 可以幫助你的服務(wù)器跟蹤并監(jiān)控你的腳本。

下面的函數(shù)用于生成錯(cuò)誤信息:

show_error($message, $status_code, $heading = 'An Error Was Encountered')

參數(shù):

  • $message (mixed) -- Error message
  • $status_code (int) -- HTTP Response status code
  • $heading (string) -- Error page heading

返回類(lèi)型:

void

該函數(shù)使用下面的錯(cuò)誤模板來(lái)顯示錯(cuò)誤信息:

application/views/errors/html/error_general.php

或:

application/views/errors/cli/error_general.php

可選參數(shù) $status_code 將決定發(fā)送什么 HTTP 狀態(tài)碼。 如果 $status_code 小于 100,HTTP 狀態(tài)碼將被置為 500 , 退出狀態(tài)碼將被置為$status_code + EXIT__AUTO_MIN 。 如果它的值大于 EXIT__AUTO_MAX 或者如果 $status_code 大于等于 100 ,退出狀態(tài)碼將被置為 EXIT_ERROR。 詳情可查看 application/config/constants.php 文件。

show_404($page = '', $log_error = TRUE)

參數(shù):

  • $page (string) -- URI string
  • $log_error (bool) -- Whether to log the error

返回類(lèi)型:

void

該函數(shù)使用下面的錯(cuò)誤模板來(lái)顯示 404 錯(cuò)誤信息:

application/views/errors/html/error_404.php

或:

application/views/errors/cli/error_404.php

傳遞給該函數(shù)的字符串代表的是找不到的文件路徑。退出狀態(tài)碼 將設(shè)置為 EXIT_UNKNOWN_FILE 。 注意如果找不到控制器 CodeIgniter 將自動(dòng)顯示 404 錯(cuò)誤信息。

默認(rèn) CodeIgniter 會(huì)自動(dòng)將 show_404() 函數(shù)調(diào)用記錄到錯(cuò)誤日志中。 將第二個(gè)參數(shù)設(shè)置為 FALSE 將跳過(guò)記錄日志。

log_message($level, $message, $php_error = FALSE)

參數(shù):

  • $level (string) -- Log level: 'error', 'debug' or 'info'
  • $message (string) -- Message to log
  • $php_error (bool) -- Whether we're logging a native PHP error message

返回類(lèi)型:

void

該函數(shù)用于向你的日志文件中寫(xiě)入信息,第一個(gè)參數(shù)你必須提供 三個(gè)信息級(jí)別中的一個(gè),用于指定記錄的是什么類(lèi)型的信息(調(diào)試, 錯(cuò)誤和一般信息),第二個(gè)參數(shù)為信息本身。

示例:

if ($some_var == '')
{
    log_message('error', 'Some variable did not contain a value.');
}
else
{
    log_message('debug', 'Some variable was correctly set');
}

log_message('info', 'The purpose of some variable is to provide some value.');

有三種信息類(lèi)型:

  1. 錯(cuò)誤信息。這些是真正的錯(cuò)誤,譬如 PHP 錯(cuò)誤或用戶(hù)錯(cuò)誤。
  2. 調(diào)試信息。這些信息幫助你調(diào)試程序,譬如,你可以在一個(gè)類(lèi) 初始化的地方記錄下來(lái)作為調(diào)試信息。
  3. 一般信息。這些是最低級(jí)別的信息,簡(jiǎn)單的給出程序運(yùn)行過(guò)程中的一些信息。

注解

為了保證日志文件被正確寫(xiě)入,logs/ 目錄必須設(shè)置為可寫(xiě)的。 此外,你必須要設(shè)置 application/config/config.php 文件中的 "threshold" 參數(shù),舉個(gè)例子,譬如你只想記錄錯(cuò)誤信息,而不想 記錄另外兩種類(lèi)型的信息,可以通過(guò)這個(gè)參數(shù)來(lái)控制。如果你將 該參數(shù)設(shè)置為 0 ,日志就相當(dāng)于被禁用了。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)