PHP エラーの種類
1. プログラム自体のエラー
この種のエラーは、構文エラーやコンパイラーが解析できないなど、簡単に対処できるエラーです。これらのエラーはコンパイル時にコンパイルに合格しません。次の方法で見つけることができます。エラープロンプトが表示されます。ただし、 eval() を使用して実行されたコードでエラーが発生した場合、コンパイル中にエラーを見つけることはできません。コードが実行されてコンパイル中にエラーが発生するまで待つことしかできません。次のコードを実行すると、エラーが発生します。実行プロセスエラー:
<span style="font-size:18px;"><?php echo "this will be echo to putty"; eval("php error when parser"); ?></span>このエラーと他のコード エラーの違いは、出力される前のエコーであることです。コンパイルが通過せず、実行されないため、他のコード エラーについては出力はありません。
2、未定義のシンボル
PHP はコンパイル時にすべてのシンボル名、関数名などを完全に理解するわけではないため、PHP を実行すると、多くの変数、関数、その他の未知の名前に遭遇する可能性があります。
単なる未定義の定数または変数の場合、これは単なる通知フォームです。ただし、未定義の関数またはクラスが見つかった場合、プログラムは終了します。見つからないクラスに関しては、ユーザーが __autoload という関数を定義すると、PHP が未定義のクラスに遭遇したときに呼び出されます。この関数を通じてクラスを返すことができれば、新しくロードされたクラスが使用されます。
3. 普遍的なエラー
3.1 オペレーティング システムによる違い
特定のプラットフォームでのみ使用できる一部の PHP 関数。
特定のプラットフォームでは使用できない一部の PHP 関数。
プラットフォームによって若干異なるいくつかの PHP 関数。
ファイル名のパス構成要素を区別する文字。
外部プログラムまたはサービスは、プラットフォームによっては利用できない場合があります。
3.2 PHP 設定の違い
たとえば、構成オプション magic_quotes_gpc が有効な場合、PHP はすべての外部データにスラッシュを追加します。現時点で、このオプションをオンにせずにプログラムを別のサーバーに移植すると、ユーザー入力に問題が発生します。同様の違いに対処する方法は、PHP コードをチェックし、ini_get() 関数を通じてオプションが有効になっているかどうかを確認し、統一された調整を行うことです。
register_globals: この設定は、PHP が GET、POST、Cookie、環境変数、またはサーバー変数をグローバル変数として導入するかどうかを決定します。一般的には避けられます。
allow_url_fopen: このオプションを false に設定すると、URL ファイルの操作機能がオフになります。
3.3 SAPI の違い
4. 操作エラー
たとえば、ハードディスクのデータやネットワーク操作、データベース呼び出しを行うときに、PHP 自体以外の要因によって発生するエラーです。
5、PHP エラー
PHP のエラー メカニズムは、すべての PHP 組み込み関数で使用され、通常、この単純なメカニズムにより、いくつかの基本的なエラー関連情報を含むエラー メッセージが出力されます。
エラーレベルは次のように分類されます:
E_ERROR: 重大なエラー。
E_WARNING: 最も一般的なエラーの種類。
E_PARSE: コンパイル中に解析エラーが発生しました。
E_STRICT: PHP4 から PHP5 への移行を容易にするために、このエラー レベルは E_ALL 定数に含まれない唯一のエラー レベルです。
E_NOTICE: 実行中のコードが未知の何かを動作させている可能性があることを示します。
E_CORE_ERROR: 拡張機能の起動失敗などが原因です。
E_COMPILE_WARNING: コンパイル中に表示される警告で、推奨されない構文情報をユーザーに伝えます。
E_COMPILE_ERROR: コンパイル エラー。
E_USER_ERROR
E_USER_WARNING
error_reporting(Integer) 関数を使用して、どのエラーが報告されるかを設定できます。たとえば、すべてのエラーは E_ALL として表現されます。通知を除くすべてのエラーは、E_ALL & ~E_NOTICE.
として表現できます。display_errors (ブール値): この設定は、エラーを PHP 出力の一部として表示するかどうかを制御します。
log_errors(boolean)、この設定はエラーをログに記録するかどうかを制御します。ログのアドレスは、error_log(String) 設定によって決まります。デフォルトでは、エラーは WEB サーバーのエラー ログに記録されます。
html_errors(boolean): エラー メッセージで HTML 形式を使用するかどうかを制御するように設定します。
6. エラーハンドラーを定義します
set_error_handler(error_handle_function,error_types) を呼び出してエラー ハンドラーを指定できます。
など関数customError($errno, $errstr, $errfile, $errline)
{
echo "カスタム エラー: [$errno] $errstr
";
}
set_error_handler("customError"); // デフォルトはすべてのエラー、つまり E_ALL です。