web-dev-qa-db-ja.com

PHP通知を無効にする方法

Notice: Constant DIR_FS_CATALOG already defined

display_errorsの中で php.ini をコメントアウトしましたが、うまくいきません。

ブラウザにそのようなことを出力しないようにPHPを作るにはどうすればいいですか?

UPDATE

私はそこにdisplay_errors = Offを置きます、しかしそれはまだそのような通知を報告しています、

これはPHP 5.3の問題ですか?

多数のコールスタックも報告します。

110
user198729

display_errors0に設定するか、 error_reporting() 関数を使用することができます。

しかし、注意は厄介です(私は 部分的に共感 することができます)が、それらは目的を果たします。あなたは二度定数を定義するべきではありません、二度目は動作しないでしょう、そして定数は変更されないままになります!

72
Pekka 웃

PHPのドキュメントから( error_reporting ):

<?php
// Turn off all error reporting
error_reporting(0);
?>

その機能のための他の興味深いオプション:

<?php

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL & ~E_NOTICE);
// For PHP < 5.3 use: E_ALL ^ E_NOTICE

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>
220
Cristian

コマンドラインphpには、

error_reporting = E_ALL & ~E_NOTICE

/etc/php5/cli/php.ini

コマンドphpを実行すると、通知が省略されます。

31
Paul Salber
<?php

// Turn off all error reporting
error_reporting(0);

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>

ソース http://php.net/manual/en/function.error-reporting.php

20
Abhishek Goel

あなたのコードでこの行を使った

error_reporting(E_ALL ^ E_NOTICE);  

私はそれがあなたにいっぱいだと思います。

10
vicky mahale

あなたは探している:

php -d error_reporting="E_ERROR | E_WARNING | E_PARSE"
4

スクリプトにini_set('display_errors',0);を設定するか、表示したいエラーをerror_reporting()で定義できます。

4
jeroen

エラーを引き起こさないことによって:

defined('DIR_FS_CATALOG') || define('DIR_FS_CATALOG', 'whatever');

本当に必要な場合は、error_reporting()を使用してエラー報告をE_ALL ^ E_NOTICEに変更してください。

3
Jonathan Kuhn

PHPコードの場合:

<?php
error_reporting(E_ALL & ~E_NOTICE);

php.ini configの場合:

error_reporting = E_ALL & ~E_NOTICE
2
Nabi K.A.Z.

Php.iniのdisplay_errorsをコメントアウトしてもうまくいかないと思います。デフォルトはOnです。代わりに 'Off'に設定する必要があります。

設定変更を適用するためにApacheを再起動することを忘れないでください。

また、実行時にdisplay_errorsを設定することはできますが、ここで変更してもFATALエラーには影響しません。

他の人が指摘したように、理想的には開発中はerror_reportingをできるだけ高いレベルで実行し、display_errorsを有効にして実行するべきです。あなたが最初に起動したときに迷惑な間、これらのエラー、警告、注意事項と厳格なコーディングアドバイスはすべてあなたがより良いコーダーになることを可能にします。

0
AllenJB

Phpinfo()を使用してConfiguration File (php.ini) Pathを検索し、phpのどの設定ファイルパスが使用されているかを確認してください。 PHPは実行している環境に応じて複数の設定ファイルを持つことができます。通常、コンソール用です:

/etc/php5/cli/php.ini

そしてApacheによって実行されるphpの場合:

/etc/php5/Apache2/php.ini

それからerror_reportingを必要に応じて設定します。

http://www.phpknowhow.com/configuration/php-ini-error-settings/http://www.zootemplate.com/news-updates/how-to-disable phpiniファイルの-notice-and-warning-)

0
MilanG

私は最近このトリックを見つけました。警告/エラーを発生させる可能性がある行の先頭で@をたたきます。

魔法のように、彼らは消えます。

0
DrLazer

あなたがコード作成者であれば、それらを修正しないよりも長期的にはより多くの問題を引き起こすので、あなたがコード作成者であるならば、あなたはそれらすべてを訂正するべきです。サーバーの場合、エラーはログにのみ表示され、クライアントの画面には表示されません。

ブラウザのエラーを回避するために、display_errorsフラグを使用してください。

display_errors = Off

今本当の問題はあなたが他の誰かのコードを実行しているときです。その場合、コードを変更すると、そのコードをアップグレードするたびに上書きされる可能性があります。そのコードを保守するのは面倒です。

私の場合は、PHPをcrontabで実行して、wp-cron.phpスクリプトを時々実行させています。エラーが私のEメールに送信されていましたが、10分ごとにEメールを1つ受け取ると面倒になります。しかしその場合、WordpressシステムにはWP_DEBUGを含む設定ファイルがあり、それらはerror_reporting()関数を呼び出すので、コマンドラインでerror_reporting変数を変更しようとしてもうまくいきません。代わりに、ルートフォルダのwp-config.phpファイルを編集して、WP_DEBUGfalseに設定されていることを確認する必要があります。それ以外の場合は、これらすべての警告が表示され、常に通知されます。

0
Alexis Wilke

私は自分のコードの中にerror_reportingを設定しないことを好みます。しかし、あるケースでは、従来の製品には、非常に多くの注意事項があるため、それらを隠す必要があります。

そのため、次のスニペットを使用してerror_reportingのサーバー側で設定された値を設定し、E_NOTICEsを引きます。

error_reporting(error_reporting() & ~E_NOTICE);

これで、エラー報告設定をphp.iniまたは.htaccessでさらに構成できます。通知のみが常に無効になります。

0
algorhythm

あなたは定数が既に定義されているかどうかをチェックすることができます:

<?php
if (!defined('MYCONST'))
    define('MYCONST', 'Weeha!');
?>
0
Thiago Belem