當前位置 : IT培訓網 > PHP開發 > php教程 > PHP教程之PHP錯誤處理

PHP教程之PHP錯誤處理

時間:2016-11-30 10:19:19??來源:php培訓網??作者:鄭州IT培訓網??已有:名學員訪問該課程
今天,IT培訓網和大家介紹的是PHP教程之PHP錯誤處理。PHP基礎知識是每個想要成為PHP工程師的小伙伴們都要學習的內容,望大家認真學習,得償所愿。

  今天,IT培訓網和大家介紹的是PHP教程之PHP錯誤處理。PHP基礎知識是每個想要成為PHP工程師的小伙伴們都要學習的內容,望大家認真學習,得償所愿。

        PHP 錯誤處理

  在 PHP 中,默認的錯誤處理很簡單。一條錯誤消息會被發送到瀏覽器,這條消息帶有文件名、行號以及描述錯誤的消息。

  PHP 錯誤處理

  在創建腳本和 Web 應用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程序看上去很不專業,也為安全風險敞開了大門。

  本教程介紹了 PHP 中一些最為重要的錯誤檢測方法。

  我們將為您講解不同的錯誤處理方法:

  簡單的 "die()" 語句

  自定義錯誤和錯誤觸發器

  錯誤報告

  基本的錯誤處理:使用 die() 函數

  第一個實例展示了一個打開文本文件的簡單腳本:

  <?php

  $file=fopen("welcome.txt","r");

  ?>

  如果文件不存在,您會得到類似這樣的錯誤:

  Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:

  No such file or directory in /www/cnitedu/test/test.php on line 2

  為了避免用戶得到類似上面的錯誤消息,我們在訪問文件之前檢測該文件是否存在:

  <?php

  if(!file_exists("welcome.txt"))

  {

  die("文件不存在");

  }

  else

  {

  $file=fopen("welcome.txt","r");

  }

  ?>

  現在,如果文件不存在,您會得到類似這樣的錯誤消息:

  文件不存在

  相比之前的代碼,上面的代碼更有效,這是由于它采用了一個簡單的錯誤處理機制在錯誤之后終止了腳本。

  然而,簡單地終止腳本并不總是恰當的方式。讓我們研究一下用于處理錯誤的備選的 PHP 函數。

  創建自定義錯誤處理器

  創建一個自定義的錯誤處理器非常簡單。我們很簡單地創建了一個專用函數,可以在 PHP 中發生錯誤時調用該函數。

  該函數必須有能力處理至少兩個參數 (error level 和 error message),但是可以接受最多五個參數(可選的:file, line-number 和 error context):

  語法

  error_function(error_level,error_message,

  error_file,error_line,error_context)

PHP教程之PHP錯誤處理_www.oalvodamoda.com

  錯誤報告級別

  這些錯誤報告級別是用戶自定義的錯誤處理程序處理的不同類型的錯誤:

PHP教程之PHP錯誤處理_www.oalvodamoda.com

  現在,讓我們創建一個處理錯誤的函數:

  function customError($errno, $errstr)

  {

  echo "<b>Error:</b> [$errno] $errstr<br>";

  echo "腳本結束";

  die();

  }

  上面的代碼是一個簡單的錯誤處理函數。當它被觸發時,它會取得錯誤級別和錯誤消息。然后它會輸出錯誤級別和消息,并終止腳本。

  現在,我們已經創建了一個錯誤處理函數,我們需要確定在何時觸發該函數。

  設置錯誤處理程序

  PHP 的默認錯誤處理程序是內建的錯誤處理程序。我們打算把上面的函數改造為腳本運行期間的默認錯誤處理程序。

  可以修改錯誤處理程序,使其僅應用到某些錯誤,這樣腳本就能以不同的方式來處理不同的錯誤。然而,在本例中,我們打算針對所有錯誤來使用我們自定義的錯誤處理程序:

  set_error_handler("customError");

  由于我們希望我們的自定義函數能處理所有錯誤,set_error_handler() 僅需要一個參數,可以添加第二個參數來規定錯誤級別。

  實例

  通過嘗試輸出不存在的變量,來測試這個錯誤處理程序:

  <?php

  // 錯誤處理函數

  function customError($errno, $errstr)

  {

  echo "<b>Error:</b> [$errno] $errstr";

  }

  // 設置錯誤處理函數

  set_error_handler("customError");

  // 觸發錯誤

  echo($test);

  ?>

  以上代碼的輸出如下所示:

  Error: [8] Undefined variable: test

  觸發錯誤

  在腳本中用戶輸入數據的位置,當用戶的輸入無效時觸發錯誤是很有用的。在 PHP 中,這個任務由 trigger_error() 函數完成。

  實例

  在本例中,如果 "test" 變量大于 "1",就會發生錯誤:

  <?php

  $test=2;

  if ($test>1)

  {

  trigger_error("變量值必須小于等于 1");

  }

  ?>

  以上代碼的輸出如下所示:

  Notice: 變量值必須小于等于 1

  in /www/test/cnitedu.php on line 5

  您可以在腳本中任何位置觸發錯誤,通過添加的第二個參數,您能夠規定所觸發的錯誤級別。

  可能的錯誤類型:

  E_USER_ERROR - 致命的用戶生成的 run-time 錯誤。錯誤無法恢復。腳本執行被中斷。

  E_USER_WARNING - 非致命的用戶生成的 run-time 警告。腳本執行不被中斷。

  E_USER_NOTICE - 默認。用戶生成的 run-time 通知。在腳本發現可能有錯誤時發生,但也可能在腳本正常運行時發生。

  實例

  在本例中,如果 "test" 變量大于 "1",則發生 E_USER_WARNING 錯誤。如果發生了 E_USER_WARNING,我們將使用我們自定義的錯誤處理程序并結束腳本:

  <?php

  // 錯誤處理函數

  function customError($errno, $errstr)

  {

  echo "<b>Error:</b> [$errno] $errstr<br>";

  echo "腳本結束";

  die();

  }

  // 設置錯誤處理函數

  set_error_handler("customError",E_USER_WARNING);

  // 觸發錯誤

  $test=2;

  if ($test>1)

  {

  trigger_error("變量值必須小于等于 1",E_USER_WARNING);

  }

  ?>

  以上代碼的輸出如下所示:

  Error: [512] 變量值必須小于等于 1

  腳本結束

  現在,我們已經學習了如何創建自己的 error,以及如何觸發它們,接下來我們研究一下錯誤記錄。

  錯誤記錄

  在默認的情況下,根據在 php.ini 中的 error_log 配置,PHP 向服務器的記錄系統或文件發送錯誤記錄。通過使用 error_log() 函數,您可以向指定的文件或遠程目的地發送錯誤記錄。

  通過電子郵件向您自己發送錯誤消息,是一種獲得指定錯誤的通知的好辦法。

  通過 E-Mail 發送錯誤消息

  在下面的例子中,如果特定的錯誤發生,我們將發送帶有錯誤消息的電子郵件,并結束腳本:

  <?php

  // 錯誤處理函數

  function customError($errno, $errstr)

  {

  echo "<b>Error:</b> [$errno] $errstr<br>";

  echo "已通知網站管理員";

  error_log("Error: [$errno] $errstr",1,

  "someone@example.com","From: webmaster@example.com");

  }

  // 設置錯誤處理函數

  set_error_handler("customError",E_USER_WARNING);

  // 觸發錯誤

  $test=2;

  if ($test>1)

  {

  trigger_error("變量值必須小于等于 1",E_USER_WARNING);

  }

  ?>

  以上代碼的輸出如下所示:

  Error: [512] 變量值必須小于等于 1

  已通知網站管理員

  接收自以上代碼的郵件如下所示:

  Error: [512] 變量值必須小于等于 1

  這個方法不適合所有的錯誤。常規錯誤應當通過使用默認的 PHP 記錄系統在服務器上進行記錄。

      今天的PHP教程基礎知識就為大家分享到這里了,不知道大家有沒有學會,如果想要了解更多PHP教程基礎知識,可以訪問PHP教程欄目。

頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
------分隔線----------------------------
PHP 教程
1、PHP 基礎
1.1 PHP 簡介
1.2 PHP 安裝
1.3 PHP 語法
1.4 PHP 變量
1.5 PHP echo/print
1.6 PHP 數據類型
1.7 PHP 常量
1.8 PHP 字符串
1.9 PHP 運算符
1.10 PHP If...Else
1.11 PHP Switch
1.12 PHP 數組
1.13 PHP 數組排序
1.14 PHP 超級全局變量
1.15 PHP While 循環
1.16 PHP For 循環
1.17 PHP 函數
1.18 PHP 魔術變量
1.19 PHP 命名空間
1.20 PHP 面向對象
2、PHP 表單
2.1 PHP 表單
2.2 PHP 表單驗證
2.3 PHP 表單 - 必需字段
2.4 PHP 表單 - 驗證郵件和URL
2.5 PHP 完整表單實例
2.6 PHP $_GET 變量
2.7 PHP $_POST 變量
3、PHP 高級教程
3.1 PHP 多維數組
3.2 PHP 日期
3.3 PHP 包含
3.4 PHP 文件
3.5 PHP 文件上傳
3.6 PHP Cookie
3.7 PHP Session
3.8 PHP E-mail
3.9 PHP 安全 E-mail
3.10 PHP Error
3.11 PHP 過濾器
3.12 PHP 高級過濾器
3.13 PHP JSON
4、PHP 7 新特性
4.1 PHP 7 新特性
5、PHP 數據庫
5.1 PHP MySQL 簡介
5.2 PHP MySQL 連接
5.3 PHP MySQL 創建數據庫
5.4 PHP MySQL 創建數據表
5.5 PHP MySQL 插入數據
5.6 PHP MySQL 插入多條數據
5.7 PHP MySQL 預處理語句
5.8 PHP MySQL 讀取數據
5.9 PHP MySQL Where
5.10 PHP MySQL Order By
5.11 PHP MySQL Update
5.12 PHP MySQL Delete
5.13 PHP ODBC
6、PHP XML
6.1 XML Expat Parser
6.2 XML DOM
6.3 XML SimpleXML
7、PHP 與 AJAX
7.1 AJAX 簡介
7.2 AJAX 與PHP
7.3 AJAX 數據庫
7.4 AJAX XML
7.5 AJAX 實時搜索
7.6 AJAX RSS Reader
7.7 AJAX 投票
五月情天