PHP ですべてのエラーを表示する

Subodh Poudel 2023年1月30日
  1. error_reporting('E_ALL') 関数と ini_set() 関数を display_errors ディレクティブとともに使用して、警告エラーを表示する
  2. error_reporting('-1') 関数と ini_set() 関数を display_errorsdisplay_startup_errors ディレクティブとともに使用してエラーを表示する
  3. php.ini ファイルのディレクティブを変更して、PHP の解析エラーを含むすべてのエラーを表示する
PHP ですべてのエラーを表示する

error_reporting() 関数と ini_set() 関数を使用して、PHP スクリプトでエラーを表示する方法を紹介します。最初の方法はエラーを報告し、2 番目の方法は php.ini ファイルまたは Apache 構成ファイルをオーバーライドし、現在のスクリプトのエラーのみを表示するようにオンにします。

同じ関数を使用して PHP エラーを表示する別の方法、つまり最初のメソッドと同じ error_reporting() 関数と ini_set() 関数を示します。このメソッドを最初のメソッドと区別する重要な点は、display_startup_errors ディレクティブを持つ別の ini_set() 関数を使用し、error_reporting() 関数が引数として整数値をとることです。

php.ini ファイルの構成を変更して、すべての PHP エラーを表示する永続的なソリューションを紹介します。上記の 2つの方法は、中括弧やセミコロンの欠落などの解析エラーの表示には役立ちません。

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_errors1 に設定します。'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_errorsdisplay_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() 関数で 1 を示す true に設定します。error_reporting-1 に設定します。変数 $a に値 10 を割り当て、変数 $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 エラーを表示するように、php.ini ファイルのディレクティブを変更できます。php.ini ファイルには、PHP スクリプトの実行中に必要なデフォルトの構成が含まれています。上記のメソッドは、ランタイムでのみディレクティブの値を変更しますが、php.ini ファイルを変更すると値が永続的に変更されます。ただし、本番レベルではこの方法に従うべきではありません。PHP の設定ファイルの詳細については、PHP マニュアルを確認してください。

php.ini ファイルのディレクティブの値を変更するには、まずシステム内でファイルを見つけます。次のスクリプトを使用します。

#php 7.x
<?php
phpinfo();
?>

Loaded Configuration File を見つけると、php.ini ファイルの場所を確認できます。ファイルで、ディレクティブ display_errorsdisplay_startup_errors を見つけ、値を on に変更します。error_reporting を見つけて、error_reporting = E_ALL ^ E_NOTICE ^ E_WARNING に変更します。次に、ApacheWeb サーバーを再起動します。

たとえば、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 Poudel
Subodh Poudel avatar Subodh Poudel avatar

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

関連記事 - PHP Error