我正在尝试关闭我网站上的所有错误。我已经按照不同的教程来了解如何执行此操作,但我不断阅读并打开错误消息。有什么我想念的吗?我在我的php.ini文件中尝试了以下内容:
;Error display
display_startup_errors = Off
display_errors = Off
html_errors = Off
docref_root = 0
docref_ext = 0
出于某种原因,当我对不存在的文件执行fileopen()调用时,仍然会显示错误。由于显而易见的原因,这对于实时网站来说是不安全的。
由于
答案 0 :(得分:30)
我总是在配置文件中使用这样的东西:
// toggle this to change the setting
define('DEBUG', true);
// you want all errors to be triggered
error_reporting(E_ALL);
if(DEBUG == true)
{
// you're developing, so you want all errors to be shown
display_errors(true);
// logging is usually overkill during dev
log_errors(false);
}
else
{
// you don't want to display errors on a prod environment
display_errors(false);
// you definitely wanna log any occurring
log_errors(true);
}
这样可以在调试设置之间轻松切换。您可以通过检查代码运行的服务器(开发,测试,验收,产品)并相应地更改您的设置来进一步改进。
请注意,如果将error_reporting设置为0,则不会记录任何错误,正如Korri巧妙评论的那样。
答案 1 :(得分:22)
您应该考虑不显示错误消息!
在您的php代码中设置ini_set('display_errors', 'Off');
(如果可能,直接在您的ini中设置),并在E_ALL
上留下error_reporting,或者在日志中找到任何类型的消息。
这样,您可以稍后处理错误,而您的用户仍然看不到它们。
define('DEBUG', true);
error_reporting(E_ALL);
if (DEBUG)
{
ini_set('display_errors', 'On');
}
else
{
ini_set('display_errors', 'Off');
}
define('DEBUG', true);
error_reporting(E_ALL);
ini_set('display_errors', DEBUG ? 'On' : 'Off');
答案 2 :(得分:9)
在php.ini
评论中,
error_reporting = E_ALL & ~E_NOTICE
error_reporting = E_ALL & ~E_NOTICE | E_STRICT
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ER… _ERROR
error_reporting = E_ALL & ~E_NOTICE
将;
置于其前面(例如;error_reporting = E_ALL & ~E_NOTICE
)
要在单个文件中停用,请在打开error_reporting(0);
代码后放置php
。
答案 3 :(得分:8)
你应该尝试这个所有错误
error_Reporting = off
答案 4 :(得分:5)
让我快速总结一下,以供参考:
error_reporting()
会调整默认错误处理程序的当前活动设置。
编辑error reporting ini options也会更改默认值。
此处必须编辑正确 php.ini
版本 - 在现代服务器上通常为/etc/php5/fpm/php.ini
,/etc/php5/mod_php/php.ini
或者;而CLI版本有一个独特的版本。
或者您可以根据SAPI使用:
.htaccess
php_flag
个选项php.ini
.user.ini
照常重启网络服务器。
如果您的代码笨拙并且在运行时以其他方式将这些选项重置为其他选项,那么另一种快速方法是定义一个自定义错误处理程序,它只会扼杀所有通知/警告/错误:
set_error_handler(function(){});
同样,这是不可取的,只是另一种选择。
答案 5 :(得分:4)
你应该尝试这个所有错误
display_errors = On
答案 6 :(得分:3)
您也可以使用PHP的error_reporting();
// disable it all for current call
error_reporting(0);
如果您只想忽略一个函数的错误,可以添加@
符号。
@any_function(); // errors are ignored
答案 7 :(得分:2)
为什么要关闭?
您可以使用error_reporting();
- http://php.net/manual/en/function.error-reporting.php或将@ - http://www.php.net/manual/en/language.operators.errorcontrol.php放在fileopen()前面。
答案 8 :(得分:1)
我通常使用php内置的错误处理程序,它可以处理语法之外的所有错误,并且仍然可以提供一个很好的“维护”功能。否则页面:
答案 9 :(得分:0)
打开你的php.ini文件(如果你使用的是Linux - sudo vim /etc/php5/apache2/php.ini)
将此行添加到该文件
error_reporting = E_ALL & ~E_WARNING
(如果您需要禁用任何其他错误 - > error_reporting = E_ALL& ~E_DEPRECATED& ~E_STRICT& ~E_NOTICE& ~E_WARNING )
display_errors = On
最后,您需要重新启动APACHE服务器。
答案 10 :(得分:0)
对于php fpm来说还不够。这是另一个可以启用display_error的配置文件。您应该找到 www.conf ,就我而言,它位于目录 /etc/php/7.1/fpm/pool.d /
您应该找到php_flag[display_errors] = on
并将其禁用php_flag[display_errors] = off
,这应该可以解决问题
答案 11 :(得分:0)
已经有一段时间了,我确信OP的答案已经清除。如果任何新用户仍在寻找答案并滚动至此,那么就在这里。
C/xampp/php/php.ini
<?php phpinfo(); ?>
display_errors
设置为Off
而不使用php.ini 您可以使用ini_set()
函数进行此操作。在(https://www.php.net/manual/en/function.ini-set.php)上了解有关ini_set()的更多信息
ini_set('display_errors', FALSE);
$displayErrors = (ini_get('display_errors') == 1) ? 'On' : 'Off';
$PHPCore = array(
'Display error' => $displayErrors
// add other details for more output
);
foreach ($PHPCore as $key => $value) {
echo "$key: $value";
}