error_reporting() 関数は、レポートするエラーを指定します。この関数は、現在のスクリプトのエラー報告レベルを設定します。この関数は古いエラー報告レベルを返します。
まず、error_reporting() 関数がエラー レベルを設定し、現在のレベルを返すために使用されることを知っておく必要があります。次の 14 のエラー レベルがあります:
リーリーデフォルトではphpが有効になっていないようですので、php.iniファイルを設定する必要があります:
display_errors = Off を display_errors = On に変更します
エラーレベルも設定します: 変更します
error_reporting = E_ALL に変更されました:
error_reporting = E_ALL & ~E_NOTICE
PHP はデフォルトですべてのエラーを表示するはずですが、無害なプロンプトを表示する必要はないので、設定は上記の通りです。
次のように PHP コードでも使用できます:
リーリー使用例:
今日 CI フレームワークを学習中に問題が発生しました:
リーリー通常、デフォルトの通常の PHP ファイルで未定義の宣言された変数を出力する場合、エラーは報告されませんが、codeigniter フレームワークではエラーが報告されます。これは、ページの追加と変更を統合したい「怠け者」にとっては非常に不快です。便利です。私は初心者なので、コード内でこのエラー メッセージをブロックしたいと思っています。@ も使用しましたが、@ を使用するとパフォーマンスが大幅に低下すると多くの人が言っています...
最後に、codeigniter は意図的にこのエラー メッセージを表示しているのではないかと思いました。この種のエラーをブロックするにはどうすればよいでしょうか? .php の error_reporting(E_ALL); を
に変更するだけです。
error_reporting(E_ALL ^ E_NOTICE);
このエラーは、他のエラーに影響を与えることなくブロックできます。
リーリー
Windows 環境: もともと php4.3.0 では正常に動作していたプログラムが、4.3.1 では多くのエラーが報告されるのはなぜですか? 一般的なプロンプトは次のとおりです: Notice: 未定義の varialbe: 変数名
コードは次のとおりです コードをコピーします
if (!$tmp_i) {
$tmp_i=10;
}
4.3.0 では正常に実行されますが、4.3.1 で実行すると、「通知: 未定義の変数: tmp_i
」というメッセージが表示されます。
質問は次のとおりです。 1. 問題はどこにありますか?
2. このコードはどのように変更する必要がありますか?
3. コードを変更せずに、php.ini の設定を変更して、4.3.0 の元のプログラムを 4.3.1 環境でこのエラー メッセージが表示されずに正常に実行できるようにする方法。
解決策:
コードは次のとおりです コードをコピーします
error_reporting(E_ALL & ~E_NOTICE); または error_reporting(E_ALL ^ E_NOTICE);
または、php.ini を変更します:
コードは次のとおりです コードをコピーします
error_reporting = E_ALL & ~E_NOTICE
error_reporting() 関数について: error_reporting() は、PHP のエラー レベルを設定し、現在のレベルを返します。
; エラー報告はビット単位で行われます。または、数値を合計して、必要なエラー報告レベルを取得します。
; E_ALL - すべてのエラーと警告
; E_ERROR - 致命的な実行時エラー
; E_WARNING - 実行時警告 (致命的ではないエラー)
; E_PARSE - コンパイル時の解析エラー
; E_NOTICE - 実行時アラート (これらは多くの場合、コード内のバグによって引き起こされるか、意図的な動作によって引き起こされる可能性があります。(例: 自動的に空の文字列に初期化されるという事実に基づいて、初期化されていない変数を使用する)
; E_CORE_ERROR - PHP 起動時の初期化プロセス中に発生する致命的なエラー
; E_CORE_WARNING - PHP 起動時の初期化プロセス中に発生する警告 (致命的ではないエラー)
; E_COMPILE_ERROR - 致命的なコンパイル時エラー
; E_COMPILE_WARNING - コンパイル時の警告 (致命的ではないエラー)
; E_USER_ERROR - ユーザーが生成したエラー メッセージ
; E_USER_WARNING - ユーザーが生成した警告メッセージ
; E_USER_NOTICE - ユーザーが生成したリマインダーメッセージ
E_NOTICE は、通常の状況が記録されないことを意味し、存在しない変数にアクセスしようとしたり、存在しないファイルを表示するために stat() 関数を呼び出したりするなど、プログラムにエラーが発生した場合にのみ使用されます。
通常、E_WARNING が表示されますが、プログラムの実行は中断されません。これはデバッグに役立ちます。たとえば、問題のある正規表記を使用して ereg() を呼び出します。
通常は E_ERROR が表示され、プログラムの実行が中断されます。これは、このマスクを使用してメモリ構成やその他のエラーを追跡できないことを意味します。
E_PARSE 構文のエラーを解析します。
E_CORE_ERROR E_ERROR と似ていますが、PHP コアによって引き起こされるエラーは除外されます。
E_CORE_WARNING E_WARNING と似ていますが、PHP コアエラー警告は含まれません
使用方法:
error_reporting(0);//エラー報告を無効にする
error_reporting(E_ALL ^ E_NOTICE);//E_NOTICE を除くすべてのエラー メッセージを表示します
error_reporting(E_ALL^E_WARNING^E_NOTICE);//E_WARNING E_NOTICE を除くすべてのエラー メッセージを表示します
error_reporting(E_ERROR | E_WARNING | E_PARSE);//実行時エラーを表示します。これは error_reporting(E_ALL ^ E_NOTICE); と同じ効果があります。 error_reporting(E_ALL);//すべてのエラーを表示
エラー報告(0)
エラー報告(255);
はい、すべてのヒントをリストします
エラー報告(0);
すべてのプロンプトを表示しない
使用をお勧めします
エラー報告(7);
重大なエラーのみを表示
1 E_ERROR 致命的なランタイムエラー
2 E_WARNING 実行時警告 (致命的ではないエラー)
4 E_PARSE コンパイル時解析エラー
8 E_NOTICE 実行時リマインダー (多くの場合バグ、おそらく意図的)
16 E_CORE_ERROR PHP 起動時の初期化中に致命的なエラーが発生しました
32 E_CORE_WARNING PHP 起動時の初期化処理中の警告 (致命的ではないエラー)
64 E_COMPILE_ERROR コンパイル中の致命的なエラー
128 E_COMPILE_WARNING コンパイル時間の警告 (致命的ではないエラー)
256 E_USER_ERROR ユーザー定義の致命的なエラー
512 E_USER_WARNING ユーザー定義の警告 (致命的ではないエラー)
1024 E_USER_NOTICE ユーザー定義のリマインダー (多くの場合バグ、意図的なものである可能性があります)
2048 E_STRICT エンコーディング標準化の警告 (上位互換性のために推奨される変更方法)
4096 E_RECOVERABLE_ERROR は、致命的に近い実行時エラーです。捕捉されない場合、E_ERROR
として扱われます。
6143 E_ALL E_STRICT を除くすべてのエラー (PHP6 では 8191、すべてを含む)