11

何を無効にするように指示しても、PHP が強制的にエラーを表示する理由は何ですか?

私が試してみました

error_reporting(0);
ini_set('display_errors', 0); 

運がない。

4

8 に答える 8

15

http://uk.php.net/error_reportingにあるマニュアルの警告に注意してください。

ほとんどの E_STRICT エラーはコンパイル時に評価されるため、このようなエラーは、E_STRICT エラーを含めるように error_reporting が拡張されたファイルでは報告されません (逆も同様です)。

基礎となるシステムが E_STRICT エラーを報告するように構成されている場合、これらはコードが考慮される前に出力される可能性があります。error_reporting/ini_set はランタイム評価であることを忘れないでください。「実行前」フェーズで実行されたものは、その効果を確認できません。


あなたのコメントに基づいて、あなたのエラーは...

解析エラー: 構文エラー、予期しない T_VARIABLE、',' または ';' が必要です /usr/home/REDACTED/public_html/dev.php の 11 行目

その後、同じ一般的な概念が適用されます。コードは構文的に無効であるため、実行されません (';' を忘れました)。したがって、エラー報告の変更が発生することはありません。

これを修正するには、システム レベルのエラー レポートを変更する必要があります。たとえば、Apache では次の場所に配置できる場合があります。

php_value error_reporting 0

.htaccess ファイルでそれらをすべて抑制しますが、これはシステム構成に依存します。

実用的には、構文エラーのあるファイルを書き込まないでください:)

于 2008-09-16T23:26:17.067 に答える
3

エラーが表示されないようにするには、次のことができます

  • .htaccess に書き込みます: php_flag display_errors 0
  • メイン (親) PHP ファイルが error_logging のみを設定してから、他のファイルを include() する個別のモジュールにコードを分割します。
于 2008-09-18T13:06:59.427 に答える
1

phpinfoを使用してロードされた php.ini を見つけ、それを編集してエラーを非表示にします。スクリプトに入力した内容をオーバーライドします。

于 2011-01-02T15:52:17.523 に答える
1

set_error_handler()スクリプトのどこかで使用されていますか? これは をオーバーライドしますerror_reporting(0)

于 2013-06-10T08:34:37.190 に答える
0

php_admin_valueを使用して Apache で設定が指定されている場合、.htaccess または実行時に変更することはできません。

参照:構成設定を変更する方法

于 2008-09-18T21:25:17.263 に答える
0

実用的には、構文エラーのあるファイルを書き込まないでください:)

ファイルに構文エラーがないことを確認するには、次を実行します。

php -l YOUR_FILE_HERE.php

これにより、次のようなものが出力されます。

PHP Parse error:  syntax error, unexpected '}' in Connection.class.php on line 31
于 2015-12-07T15:50:45.263 に答える
0

それらを表示する代わりにログに記録するには、log_errorsを使用します。

于 2008-09-16T23:33:46.567 に答える