Notice: Constant DIR_FS_CATALOG already defined
我已在php.ini
中注释掉了display_errors
,但无效。
如何让PHP不向浏览器输出这些内容?
更新
我把display_errors = Off
放在那里,但它仍在报告此类通知,
这是PHP 5.3的问题吗?
报告众多调用堆栈 ..
答案 0 :(得分:220)
从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);
?>
答案 1 :(得分:72)
您可以将display_errors
设置为0
或使用error_reporting()
功能。
但是,通知很烦人(我可partly sympathize),但它们有用。你不应该定义两次常数,第二次不起作用,常数将保持不变!
答案 2 :(得分:31)
对于命令行php,设置
error_reporting = E_ALL & ~E_NOTICE
/etc/php5/cli/php.ini
中的
命令php
执行然后省略通知。
答案 3 :(得分:20)
<?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);
?>
答案 4 :(得分:10)
在您的代码中使用此行
error_reporting(E_ALL ^ E_NOTICE);
我认为它对你很满意。
答案 5 :(得分:4)
您正在寻找:
php -d error_reporting="E_ERROR | E_WARNING | E_PARSE"
答案 6 :(得分:4)
您可以在脚本中设置ini_set('display_errors',0);
,或者使用error_reporting()
定义要显示的错误。
答案 7 :(得分:3)
不导致错误:
defined('DIR_FS_CATALOG') || define('DIR_FS_CATALOG', 'whatever');
如果确实需要,请使用error_reporting()将错误报告更改为E_ALL ^ E_NOTICE。
答案 8 :(得分:2)
对于PHP代码:
<?php
error_reporting(E_ALL & ~E_NOTICE);
对于php.ini
config:
error_reporting = E_ALL & ~E_NOTICE
答案 9 :(得分:0)
我最近发现了这个伎俩。 在行的开头敲一个可能产生警告/错误的@。
好像通过魔法,他们消失了。
答案 10 :(得分:0)
我相信在php.ini中注释掉display_errors是行不通的,因为默认为On。您必须将其设置为“关闭”。
不要忘记重新启动Apache以应用配置更改。
另请注意,虽然您可以在运行时设置display_errors,但在此处更改它不会影响致命错误。
正如其他人所指出的那样,理想情况下,在开发过程中,您应该在尽可能高的级别运行error_reporting并启用display_errors。虽然你刚开始时很烦人,但这些错误,警告,通知和严格的编码建议都会加起来,使你能够找到一个更好的编码器。
答案 11 :(得分:0)
您可以使用以下方法检查常量是否已定义:
<?php
if (!defined('MYCONST'))
define('MYCONST', 'Weeha!');
?>
答案 12 :(得分:0)
使用phpinfo()并搜索org\wso2\carbon\utils\logging\appenders
CarbonConsoleAppender.class
CarbonConsoleAppender$1.class
以查看使用php的配置文件路径。 PHP可以有多个配置文件,具体取决于它运行的环境。通常,对于控制台来说:
/etc/php5/cli/php.ini
对于由apache运行的php,它是:
/etc/php5/apache2/php.ini
然后按照您需要的方式设置Configuration File (php.ini) Path
:
http://www.phpknowhow.com/configuration/php-ini-error-settings/ http://www.zootemplate.com/news-updates/how-to-disable-notice-and-warning-in-phpini-file
答案 13 :(得分:0)
如某些人所述,如果您是代码作者,您应该更正所有这些错误,通知等,因为这会导致长期问题而不是修复它们(特别是在升级操作系统时)。对于您的服务器,您应该只在日志中显示错误,而不是客户端的屏幕。
为避免浏览器中出现错误,请使用已找到的display_errors
标记:
display_errors = Off
现在真正的问题是当你运行其他代码时。在这种情况下,每次升级该代码时,修改代码很可能会被覆盖。这使得维护该代码变得冗长乏味。
就我而言,我正在使用crontab
运行PHP以使wp-cron.php
脚本偶尔运行一次。我收到了发送到我的电子邮件的错误,当您每10分钟收到一封电子邮件时,这会变得乏味!但是,在这种情况下,Wordpress系统的配置文件包含WP_DEBUG
,并且它们调用error_reporting()
函数,因此尝试更改命令行上的error_reporting
变量赢了工作。相反,您必须编辑根文件夹中的wp-config.php
文件,并确保WP_DEBUG
设置为false
。否则,您将始终获得所有这些警告和通知。
答案 14 :(得分:0)
我不想在代码中设置error_reporting
。但是在一种情况下,旧产品有很多提示,必须将它们隐藏起来。
因此,我使用以下代码段为error_reporting
设置了服务器端配置的值,并减去了E_NOTICE
。
error_reporting(error_reporting() & ~E_NOTICE);
现在,可以在php.ini
或.htaccess
中进一步配置错误报告设置。仅通知将始终被禁用。
答案 15 :(得分:0)
双重定义的常量
要在此处修复特定错误,可以在定义常量之前检查是否已定义常量:
if ( ! defined( 'DIR_FS_CATALOG' ) )
define( 'DIR_FS_CATALOG', 'something...' );
我个人将首先在代码库中搜索常量DIR_FS_CATALOG
,然后用该替换双精度定义。
隐藏PHP会视情况内联
PHP提供了@
错误控制运算符,您可以使用它忽略引起通知或警告的特定功能。
使用此方法,您可以逐案忽略/禁用通知和警告,这对于故意或有意,有计划或令人讨厌的错误或通知而无法解决的情况很有用在源头上。将@
放在引起通知的函数或变量之前,它将被忽略。
这是一个例子:
// Intentional file error
$missing_file = @file( 'non_existent_file' );
有关更多信息,请参见PHP's Error Control Operators文档。
答案 16 :(得分:-1)
error_reporting(E_ERROR);为我工作。