Notice: Constant DIR_FS_CATALOG already defined
display_errors
の中で php.ini
をコメントアウトしましたが、うまくいきません。
ブラウザにそのようなことを出力しないようにPHPを作るにはどうすればいいですか?
UPDATE
私はそこにdisplay_errors = Off
を置きます、しかしそれはまだそのような通知を報告しています、
これはPHP 5.3の問題ですか?
多数のコールスタックも報告します。
display_errors
を0
に設定するか、 error_reporting()
関数を使用することができます。
しかし、注意は厄介です(私は 部分的に共感 することができます)が、それらは目的を果たします。あなたは二度定数を定義するべきではありません、二度目は動作しないでしょう、そして定数は変更されないままになります!
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);
?>
コマンドラインphpには、
error_reporting = E_ALL & ~E_NOTICE
/etc/php5/cli/php.ini
に
コマンドphp
を実行すると、通知が省略されます。
<?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);
?>
あなたのコードでこの行を使った
error_reporting(E_ALL ^ E_NOTICE);
私はそれがあなたにいっぱいだと思います。
あなたは探している:
php -d error_reporting="E_ERROR | E_WARNING | E_PARSE"
スクリプトにini_set('display_errors',0);
を設定するか、表示したいエラーをerror_reporting()
で定義できます。
エラーを引き起こさないことによって:
defined('DIR_FS_CATALOG') || define('DIR_FS_CATALOG', 'whatever');
本当に必要な場合は、error_reporting()を使用してエラー報告をE_ALL ^ E_NOTICEに変更してください。
PHPコードの場合:
<?php
error_reporting(E_ALL & ~E_NOTICE);
php.ini
configの場合:
error_reporting = E_ALL & ~E_NOTICE
Php.iniのdisplay_errorsをコメントアウトしてもうまくいかないと思います。デフォルトはOnです。代わりに 'Off'に設定する必要があります。
設定変更を適用するためにApacheを再起動することを忘れないでください。
また、実行時にdisplay_errorsを設定することはできますが、ここで変更してもFATALエラーには影響しません。
他の人が指摘したように、理想的には開発中はerror_reportingをできるだけ高いレベルで実行し、display_errorsを有効にして実行するべきです。あなたが最初に起動したときに迷惑な間、これらのエラー、警告、注意事項と厳格なコーディングアドバイスはすべてあなたがより良いコーダーになることを可能にします。
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-)
私は最近このトリックを見つけました。警告/エラーを発生させる可能性がある行の先頭で@をたたきます。
魔法のように、彼らは消えます。
あなたがコード作成者であれば、それらを修正しないよりも長期的にはより多くの問題を引き起こすので、あなたがコード作成者であるならば、あなたはそれらすべてを訂正するべきです。サーバーの場合、エラーはログにのみ表示され、クライアントの画面には表示されません。
ブラウザのエラーを回避するために、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_DEBUG
がfalse
に設定されていることを確認する必要があります。それ以外の場合は、これらすべての警告が表示され、常に通知されます。
私は自分のコードの中にerror_reporting
を設定しないことを好みます。しかし、あるケースでは、従来の製品には、非常に多くの注意事項があるため、それらを隠す必要があります。
そのため、次のスニペットを使用してerror_reporting
のサーバー側で設定された値を設定し、E_NOTICE
sを引きます。
error_reporting(error_reporting() & ~E_NOTICE);
これで、エラー報告設定をphp.ini
または.htaccess
でさらに構成できます。通知のみが常に無効になります。
あなたは定数が既に定義されているかどうかをチェックすることができます:
<?php
if (!defined('MYCONST'))
define('MYCONST', 'Weeha!');
?>