まず、PHP100 フォーラム
から PHP エラー メッセージについて話しましょう。PHP エラー メッセージは次の部分で構成されます
{エラーの種類}: {エラーの理由}、{エラー ファイル}、{エラー行番号}
どのファイルのどの行でどのようなエラーが発生し、どのような理由でエラーが発生したかを説明します。
一般的なエラーの種類には通常次のようなものがあります:
解析エラーには通常、プログラムが PHP 構文に準拠していないことを示す構文エラーが伴います。
これは最高レベルのエラーであり、スクリプト全体がまったく実行されません。
これは通常、式に「;」がないか、括弧や引用符が対になっていないことが原因で発生します。詳細情報を見ると問題がわかります。
通常、構文エラーがあると、パーサー コードが表示され、問題の場所が示されます。例:
解析エラー: 構文エラー、xxx.php の 9 行目に予期しない T_STRING
T_STRING は、名前が示すように、文字列を表すパーサー コードです。これにより、エラーの原因をより直接的に理解できます。
Unexpectedとは、予想外、つまり冗長という意味です。
パーサーのコードネームの詳細については、http://www.php.net/manual/zh/tokens.php または PHP マニュアルを参照してください。中国語版では、「List of Parser Tokens」と呼ばれています。それは次のように呼ばれます: パーサーコード名のリスト
上記のエラーは、9 行目に予期しない文字列が含まれていることを意味します。
私のコード:
1-7: わずかに
8: テスト(配列('a'))
9: xxx();
10: >
この問題を解決するには、9 行目の xxx を削除します。これは PHP 構文と一致しています。
しかし、それは私が望んでいることではありません。実際、8 行目に「;」がありません。解決策は、8 行目の末尾にセミコロンを追加することです。
注: この例では、問題がどの行にあるかが示されています。必ずしもその行に問題があるとは限りません。また、その行の前にある問題が原因である可能性もあります。最も典型的な例は、プログラムがファイルの最後の行にエラー行番号があることを示すプロンプトを表示することですが、その行には「>」以外の文字がないことがよくあります。引用符がないことが原因です。先頭にある対になっていない引用符やその他の句読点を探す必要があります。主張を主張し、行番号を特定した後に手放さない場合、それは PHP には問題ありません。
Fatal Error (致命的エラー) は、解析エラーに次いで 2 番目で、エラーが発生した行に実行が到達するとスクリプトは終了します。
プログラムが PHP 構文に準拠していることに基づいて、未定義の関数を使用したり、存在しないファイルを要求したり、無限ループによりプログラムの実行がタイムアウトになったりすると、致命的なエラーが発生します。
一般的なパフォーマンスは次のとおりです:
致命的なエラー: php100.php の XX 行目で未定義の関数 func() を呼び出しています
つまり、ある行で未定義の func 関数を呼び出してしまったということですが、このときは、インクルードしたファイルをインクルードし忘れたか、関数名を間違えたか、ファイル名を間違えたかによって決まることが多いです。 。 (PHP100.com)
警告(警告)は致命的エラーレベルよりわずかに低いレベルですが、スクリプトエラーによりプログラムが終了することはありません。
通常、存在しないファイルをインクルードする場合、またはプログラムにパラメーターが必要であるが、パラメーターを渡さなかった場合、またはパラメーターのデフォルト値を指定しなかった場合に発生します。
状況に応じて警告を回避することもできますので、やむを得ない場合は@を付けることで強制的にブロックすることができます。
最も低いレベルであることに注意してください。通常は無視でき、スクリプトの実行には影響しません。ほとんどの場合、これは変数または配列の添え字が定義されていない場合に発生します。
注: ほとんどの通知は無視できますが、いくつかの通知はより深刻な問題を反映している場合があります。
例: 注意: 未定義の変数: xxx.php の xx 行目の SQL
変数 "sql" が未定義であることがわかります。 register_globals=on の場合、このエラーが直接、他のユーザーによるデータベース操作のバックドアになる可能性があります。
さらに、一般的ではないタイプのエラーが他にもいくつかあるため、詳細については説明しません。
概要
要約すると、PHP のエラー プロンプトは多くのことを教えてくれて、エラーを見つけるのに非常に便利です。上手に活用することで、作業効率や仕事の品質が大幅に向上します。
ただし、利点がある一方で、サーバーの機密情報が漏洩する可能性があり、攻撃者がサーバーの脆弱性を発見しやすくなります。
PHP 開発環境では、すべてのエラー プロンプトをオンにし、エラー表示をオンにする必要があります。事故の発生を最小限に抑えます。
運用環境では、エラー表示をオフにし、ログを使用してエラーを記録する必要があります。興味のある人にはチャンスを与えないでください。