在 PHP 中顯示所有錯誤
-
將
error_reporting('E_ALL')
函式和ini_set()
函式與display_errors
指令一起使用以顯示警告錯誤 -
將
error_reporting('-1')
函式和ini_set()
函式與display_errors
和display_startup_errors
指令一起使用以顯示錯誤 -
修改
php.ini
檔案中的指令以顯示所有錯誤,包括 PHP 中的解析錯誤
我們將介紹一種使用 error_reporting()
函式和 ini_set()
函式在 PHP 指令碼中顯示錯誤的方法。第一種方法報告錯誤,而第二種方法覆蓋 php.ini
檔案或 Apache 配置檔案並開啟以僅顯示當前指令碼的錯誤。
我們將演示另一種使用相同函式顯示 PHP 錯誤的方法-第一種方法中的 error_reporting()
函式和 ini_set()
函式。將該方法與第一個方法區分開來的關鍵點是,它使用另一個帶有 display_startup_errors
指令的 ini_set()
函式,而 error_reporting()
函式則採用整數值作為引數。
我們將介紹一個永久性的解決方案,以顯示所有 PHP 錯誤,並更改 php.ini
檔案中的配置。上面提到的兩種方法將無助於顯示解析錯誤,例如缺少大括號和分號。
將 error_reporting('E_ALL')
函式和 ini_set()
函式與 display_errors
指令一起使用以顯示警告錯誤
我們可以使用 error_reporting()
函式報告 PHP 指令碼中的所有型別的錯誤。為此,我們使用命名常量 E_ALL
作為函式中的引數。它報告各種 PHP 錯誤。然後,我們可以使用 ini_set()
函式顯示報告的錯誤。該函式將指令 display_errors
設定為 true。因此,它在 php.ini
檔案中設定配置以設定錯誤的可見性。但是,執行當前指令碼後,指令的原始值將在 php.ini
檔案中恢復。
為了演示,將 error_reporting(E_ALL)
編寫為指令碼程式碼的第一行。在 ini_set
功能中將 display_errors
設定為 1
。回顯諸如'This is a warning errorr'
之類的訊息。使用 include()
函式可包含一個名為 file.php
的外部檔案。然後執行指令碼。
下面的示例嘗試在 PHP 中顯示警告錯誤。此錯誤型別通知指令碼中存在一些問題,而沒有停止指令碼的執行。該示例在指令碼中包含檔案 file.php
。由於根資料夾中沒有此類檔案,因此指令碼將不會載入該檔案並顯示錯誤。由於這是一個警告錯誤,因此 echo
語句會與錯誤一起執行。要了解有關 error_reporting()
函式的更多資訊,請訪問 PHP 手冊
示例程式碼:
# php 7.*
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
echo "This is a warning error";
include ("file.php");
?>
輸出:
This is a warning error
**Warning**: include(file.php): failed to open stream: No such file or directory in **/var/www/html/index.php** on line **5**
**Warning**: include(): Failed opening 'file.php' for inclusion (include_path='.:/usr/share/php') in **/var/www/html/index.php** on line **5**
將 error_reporting('-1')
函式和 ini_set()
函式與 display_errors
和 display_startup_errors
指令一起使用以顯示錯誤
error_reporting()
函式還採用整數值作為引數。我們可以使用這種方法來顯示 PHP 中的錯誤。PHP 中有很多錯誤級別。-1
級別表示所有 PHP 錯誤。傳遞值 -1
可以在 PHP 的未來版本中使用,即使使用新的級別和常量也是如此。有時,ini_set()
函式中的 display_errors
指令並不總是處理 PHP 啟動時遇到的錯誤。在這種情況下,我們可以使用 display_startup_errors
來顯示錯誤。
例如,將 ini_set()
函式的變數設定為 display_startup_errors
和 display_errors
。在 ini_set()
函式中將它們設定為 true
,由 1
表示。將 error_reporting
設定為 -1
。將值 10 分配給變數 $a
並輸出變數 $b
。
在下面的示例中,指令碼遇到通知錯誤。該程式碼嘗試列印未定義的變數。要了解有關 ini_set()
函式的更多資訊,請訪問 PHP 手冊。
示例程式碼:
#php 7.x
<?php
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
$a = 10;
echo $b;
?>
輸出:
**Notice**: Undefined variable: b in **/var/www/html/index.php** on line **6**
修改 php.ini
檔案中的指令以顯示所有錯誤,包括 PHP 中的解析錯誤
我們可以修改 php.ini
檔案中的指令,以在上述方法無效時顯示 PHP 錯誤。php.ini
檔案包含執行 PHP 指令碼時所需的預設配置。上面提到的方法僅在執行時更改指令的值,而修改 php.ini
檔案則永久更改這些值。但是,我們不應該在生產級別上遵循這種做法。檢視 PHP 手冊以瞭解有關 PHP 中配置檔案的更多資訊。
要更改 php.ini
檔案指令的值,請首先在系統中找到該檔案。使用以下指令碼。
#php 7.x
<?php
phpinfo();
?>
找到 Loaded Configuration File
,你可以看到 php.ini
檔案的位置。在檔案中,找到指令 display_errors
和 display_startup_errors
,並將其值更改為 on
。找到 error_reporting
並將其更改為 error_reporting = E_ALL ^ E_NOTICE ^ E_WARNING
。然後,重新啟動 Apache 的 Web 伺服器。
例如,在 PHP 檔案中,設定 error_reporting(-1)
。給變數 $a
賦值 Orange
,但不要在其後寫分號。在另一行中列印變數。
在程式碼示例的輸出部分中,遇到並顯示瞭解析錯誤。因此,配置 php.ini
檔案也可以顯示解析錯誤。
程式碼示例:
#php 7.x
<?php
error_reporting(-1);
$a = "Orange"
echo $a;
?>
輸出:
**Parse error**: syntax error, unexpected 'echo' (T_ECHO) in **/var/www/html/index.php** on line **6**
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn