HOWTO · PHP

PHP 錯誤處理程式

在本教程中,我們將介紹 PHP 錯誤處理。我們將介紹 PHP 錯誤處理的重要性及其工作原理。

在本教程中,我們將介紹 PHP 中的錯誤處理。我們將介紹 PHP 錯誤處理的重要性及其工作原理。

什麼是 PHP 中的錯誤處理

這是識別程式中的錯誤並對其採取行動的過程。PHP 錯誤檢查程式碼將提高你程式的安全性並使其更加專業。

我們將研究的方法包括:

  1. die() 函式的基本錯誤處理。
  2. 自定義錯誤處理。

PHP 中 die() 函式的基本錯誤處理

die() 函式將向網路傳送訊息並退出指令碼。

在下面的示例程式碼中,我們將嘗試開啟根資料夾中不存在的檔案。讓我們看看發生了什麼。

<?php
$file=fopen("sampletutorial.txt","r");
?>

輸出:

Warning: fopen(sampletutorial.txt): Failed to open stream: No such file or directory in C:\xampp\htdocs\projects\New folder\PHP Error Handling\Example code 1.php on line 2

為防止出現此錯誤,我們可以使用 die() 函式列印一條訊息並退出指令碼,如下所示。

<?php
if(file_exists("sampletutorial.txt")) {
  $file = fopen("sampletutorial.txt", "r");
} else {
  die("Error: The file does not exist.");
}
?>

輸出:

Error: The file does not exist.

那好多了。讓我們看看自定義錯誤處理程式。

在 PHP 中建立自定義錯誤處理程式

自定義錯誤處理程式必須至少有兩個引數。

  1. error_level - 這是錯誤報告級別。
  2. error_message - 這是你要列印的訊息。

該函式最多接受五個引數。這些都是:

  1. error_file - 此引數指定有錯誤的檔案。
  2. error_line - 此引數顯示有錯誤的編碼行。
  3. error_context - 顯示所有有錯誤的變數和值。

不同型別的錯誤報告級別:

  1. [1] E_ERROR
  2. [2] E_WARNING
  3. [8] E_NOTICE
  4. [256] E_USER_ERROR
  5. [512] E_USER_WARNING
  6. [1024] E_USER_NOTICE
  7. [2048] E_STRICT
  8. [8191] E_ALL

讓我們建立一個自定義錯誤處理程式。下面的示例程式碼顯示了我們如何建立自定義函式來處理 PHP 中的錯誤。

<?php
function mycustomError($errno, $errstr) {
  echo "<b>Error:</b> [$errno] $errstr<br>";
  echo "Terminating Script";
  die();
}
?>

這就是我們建立自定義錯誤處理程式的方式。接下來是設定錯誤處理程式,如下所示。

<?php
//error handler function
function mycustomError($errno, $errstr) {
  echo "<b>Error:</b> [$errno] $errstr";
}

//set error handler
set_error_handler("mycustomError");

//trigger error
echo($t);
?>

輸出:

Error: [2] Undefined variable $t

由於未設定變數 $t,我們會收到一條錯誤訊息,如輸出所示。

觸發錯誤:

在使用者可以輸入資料的指令碼中觸發錯誤非常重要。這樣,使用者就不會輸入非法命令。

我們在 PHP 中使用 trigger_error() 函式,如下面的示例程式碼所示。

<?php
//error handler function
function mycustomError($errno, $errstr) {
  echo "<b>Error:</b> [$errno] $errstr<br>";
  echo "Terminating Script";
  die();
}

//set error handler
set_error_handler("mycustomError",E_USER_WARNING);

//trigger error
$t = 7;
if ($t>=1) {
  trigger_error("Value entered must be 1 or below",E_USER_WARNING);
}
?>

輸出:

Error: [512] Value entered must be 1 or below
Terminating Script

在上面的示例程式碼中,我們通過將變數 $t 的值設定為 7 來觸發錯誤。當變數 $t 大於 1 時,我們的 trigger_error() 函式被設定。