如何关闭PHP通知?

ecr0jaav  于 2022-09-18  发布在  PHP
关注(0)|答案(15)|浏览(182)
Notice: Constant DIR_FS_CATALOG already defined

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

如何使PHP不将这些内容输出到浏览器?

更新

我把display_errors = Off放在那里,但它仍然在报告这样的通知,

这是PHP5.3的一个问题吗?

报告大量的调用堆栈也..

mpgws1up

mpgws1up1#

您可以通过使用error_reporting ini设置或error_reporting()函数将错误报告级别设置为E_ALL & ~E_NOTICE;来禁用通知。

然而,通知是令人讨厌的(我可以partly sympathize),但它们有其目的。您不应该定义一个常量两次,第二次不起作用,常量将保持不变!

4uqofj5v

4uqofj5v2#

对于命令行php,设置

error_reporting = E_ALL & ~E_NOTICE

/etc/php5/cli/php.ini

然后,执行命令php将省略这些通知。

8iwquhpp

8iwquhpp3#

在代码中使用了此行

error_reporting(E_ALL ^ E_NOTICE);

我想这对你来说已经满了。

2wnc66cl

2wnc66cl4#

我不想在代码中设置error_reporting。但有一次,一个遗留产品,有太多的通知,它们必须被隐藏起来。

因此,我使用以下代码片段来设置error_reporting的服务器端配置值,但减去E_NOTICE

error_reporting(error_reporting() & ~E_NOTICE);

现在可以在php.ini.htaccess中进一步配置错误报告设置。只有通知将始终被禁用。

x6yk4ghg

x6yk4ghg5#

您正在寻找:

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

zvokhttg6#

我最近发现了这个小把戏。在可能产生警告/错误的行首点击@。

就像变魔术一样,他们消失了。

2nc8po8w

2nc8po8w7#

对于PHP代码:

<?php
error_reporting(E_ALL & ~E_NOTICE);

对于php.ini配置:

error_reporting = E_ALL & ~E_NOTICE
2ul0zpep

2ul0zpep8#

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

gj3fmq9x

gj3fmq9x9#

错误报告(E_ERROR);对我有效。

ss2ws0br

ss2ws0br10#

通过不导致错误:

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

如果您真的必须这样做,请将使用ERROR_REPORTING()的错误报告更改为E_ALL^E_NOTICE。

vs3odd8k

vs3odd8k11#

使用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-notice-and-warning-in-phpini-file

7ivaypg9

7ivaypg912#

正如一些人提到的,如果你是代码作者,你应该纠正所有这些错误、通知等,因为从长远来看,这会给你带来更多问题,而不是不修复它们(特别是当你升级操作系统时)。对于您的服务器,您应该只在日志中显示错误,而不是在客户端屏幕上显示错误。

因此,为了避免浏览器中的错误,您可以使用display_errors标志,正如您已经找到的那样:

display_errors = Off

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

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

umuewwlo

umuewwlo13#

如果从命令行运行,则可以执行以下操作:

php -d display_errors="0" script.php 2>/dev/null

您必须包括-d display_error=“0”以及将stderr重定向为空、奇怪

kkbh8khc

kkbh8khc14#

您可以使用以下命令检查常量是否已定义:

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

ycggw6v215#

我相信注解掉php.ini中的DISPLAY_ERROR是不会起作用的,因为默认设置是开的。您必须将其设置为“OFF”。

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

还要注意,虽然您可以在运行时设置DISPLAY_ERROR,但在这里更改它不会影响致命错误。

正如其他人所指出的,理想情况下,在开发期间,您应该在尽可能高的级别运行ERROR_REPORTING,并启用DISPLAY_ERROR。虽然刚开始的时候很烦人,但这些错误、警告、通知和严格的编码建议加在一起,会让你成为一名更好的程序员。

相关问题