如何closuresPHP通知?

Notice: Constant DIR_FS_CATALOG already defined 

我已经在php.ini中将display_errors注释掉了,但是不起作用。

如何让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); ?> 

其他有趣的function选项:

 <?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); ?> 

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

你可以设置ini_set('display_errors',0); 在你的脚本中定义你想用error_reporting()显示的错误。

通过不造成错误:

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

如果您确实需要使用error_reporting()将错误报告更改为E_ALL ^ E_NOTICE。

您正在寻找:

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

您可以检查常量是否已经定义使用:

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

我相信在php.ini中注释display_errors将不起作用,因为默认值是On。 您必须将其设置为“关”。

不要忘记重新启动Apache来应用configuration更改。

另外请注意,尽pipe可以在运行时设置display_errors,但在此处更改并不会影响FATAL错误。

正如其他人所指出的那样,理想情况下在开发过程中,应该尽可能以最高级别运行error_reporting并启用display_errors。 虽然第一次出发时很烦人,但是这些错误,警告,通知和严格的编码build议都加起来,使您成为更好的编码器。

我最近发现了这个诡计。 在可能产生警告/错误的行的开始处敲击@。

仿佛通过魔法,他们消失。

使用phpinfo()并searchConfiguration File (php.ini) Path来查看使用php的configuration文件path。 PHP可以有多个configuration文件,取决于它正在运行的环境。 通常,对于控制台来说:

/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-notice-and-warning-in-phpini-文件;

正如一些人所说,如果你是代码作者,你应该纠正所有这些错误,通知等,因为它会给你造成更多的问题,而不是修复它们(尤其是当你升级你的操作系统时)。 对于您的服务器,您应该只在日志中显示错误,而不是客户端的屏幕。

所以为了避免你的浏览器出现错误,你可以使用display_errors标志,

 display_errors = Off 

现在真正的问题是当你运行别人的代码。 在这种情况下,每次升级代码时,修改代码可能会被覆盖。 这使得维护代码变得乏味。

在我的情况下,我正在用crontab运行PHP,让wp-cron.php脚本wp-cron.php运行一次。 我收到的错误发送到我的电子邮件,当你每10分钟收到一封电子邮件就变得单调乏味! 在这种情况下,虽然Wordpress系统有一个包含WP_DEBUG的configuration文件,并且它们调用了error_reporting()函数,所以试图在命令行上更改error_reportingvariables将不起作用。 相反,您必须编辑根文件夹中的wp-config.php文件,并确保将WP_DEBUG设置为false 。 否则,你会一直得到所有的警告和通知。

对于PHP代码:

 <?php error_reporting(E_ALL & ~E_NOTICE); 

对于php.iniconfiguration:

 error_reporting = E_ALL & ~E_NOTICE 

在代码中使用此行

 error_reporting(E_ALL ^ E_NOTICE); 

我认为它的全部给你。