关闭显示错误PHP.ini

时间:2013-04-11 12:52:59

标签: php

我正在尝试关闭我网站上的所有错误。我已经按照不同的教程来了解如何执行此操作,但我不断阅读并打开错误消息。有什么我想念的吗?我在我的php.ini文件中尝试了以下内容:

;Error display
display_startup_errors = Off
display_errors = Off
html_errors = Off
docref_root = 0
docref_ext = 0

出于某种原因,当我对不存在的文件执行fileopen()调用时,仍然会显示错误。由于显而易见的原因,这对于实时网站来说是不安全的。

由于

12 个答案:

答案 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)

在php.ini中

你应该尝试这个所有错误

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使用:

      • mod_php:.htaccess php_flag个选项
      • FastCGI:通常是本地php.ini
      • 使用PHP 5.3以上.user.ini

    • 照常重启网络服务器。

如果您的代码笨拙并且在运行时以其他方式将这些选项重置为其他选项,那么另一种快速方法是定义一个自定义错误处理程序,它只会扼杀所有通知/警告/错误:

set_error_handler(function(){});

同样,这是不可取的,只是另一种选择。

答案 5 :(得分:4)

在php.ini中

你应该尝试这个所有错误

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内置的错误处理程序,它可以处理语法之外的所有错误,并且仍然可以提供一个很好的“维护”功能。否则页面:

Format PHP error on production server

答案 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的答案已经清除。如果任何新用户仍在寻找答案并滚动至此,那么就在这里。

在php.ini文件中检查您的更新信息

使用Windows资源管理器:

C/xampp/php/php.ini

使用XAMPP控制面板

  1. 单击“ Apache”的“配置”按钮(停止|管理员|配置|日志)
  2. 选择PHP(php.ini)

我可以创建自己的phpinfo()吗?是的,你可以

  1. 直接在您的根目录中或您想要的任何位置创建一个phpinfo.php
  2. 放置此<?php phpinfo(); ?>
  3. 保存文件。
  4. 打开文件,您应该会看到所有详细信息。

如何在我自己的文件中将display_errors设置为Off而不使用php.ini

您可以使用ini_set()函数进行此操作。在(https://www.php.net/manual/en/function.ini-set.php)上了解有关ini_set()的更多信息

  1. 转到您的header.php或index.php
  2. 添加此代码ini_set('display_errors', FALSE);

要检查输出而不访问php.ini文件

$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";
}