Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
抑制生产服务器上的php错误的最佳方法_Php_Error Handling - Fatal编程技术网

抑制生产服务器上的php错误的最佳方法

抑制生产服务器上的php错误的最佳方法,php,error-handling,Php,Error Handling,隐藏php错误使其不显示在浏览器上的最佳方法是什么 是否应使用以下内容: ini_set("display_errors", 1); 任何最佳实践技巧也将不胜感激 我正在记录错误,我只是想确保将“显示错误”值设置为“关闭”(或0)不会阻止记录错误。最好的方法是记录错误,而不是显示或忽略错误 此示例将错误记录到syslog,而不是在浏览器中显示 ini_set("display_errors", 0); ini_set("log_errors", 1); //Define where do y

隐藏php错误使其不显示在浏览器上的最佳方法是什么

是否应使用以下内容:

ini_set("display_errors", 1);
任何最佳实践技巧也将不胜感激


我正在记录错误,我只是想确保将“显示错误”值设置为“关闭”(或0)不会阻止记录错误。

最好的方法是记录错误,而不是显示或忽略错误

此示例将错误记录到syslog,而不是在浏览器中显示

ini_set("display_errors", 0);
ini_set("log_errors", 1);

//Define where do you want the log to go, syslog or a file of your liking with
ini_set("error_log", "syslog"); // or ini_set("error_log", "/path/to/syslog/file");

假设您控制着php.ini文件,那么您可以在该文件中全局地进行这些更改,而不是在所有php文件中放置ini_集合代码(有一天您可能会忘记将其放入一个文件中,这在生产中可能会很糟糕).

您也可以使用apache.htaccess记录错误,而无需触摸代码:

<IfModule mod_php5.c>
  php_flag      display_errors  Off
  php_flag      log_errors      On
  php_value     error_log       logs/errors
</IfModule>

php_标志显示_错误关闭
上的php_标志日志_错误
php\u值错误\u日志/错误

最好的方法是什么?修正错误


如果您需要一个快速的临时解决方案,那么可以关闭显示错误,但请确保您将它们记录在某个位置,因为该设置将使严重/解析错误保持沉默。

不幸的是,PHP分发文件发送了一条关于处理错误消息的混合消息。默认的php.ini文件有一些适合于生产服务器的设置,还有一些更适合于开发服务器。您应该在dev中打开所有错误(
error\u reporting=E\u all
display\u errors=on
),在prod中关闭所有错误(
display\u errors=off
但指向
log\u errors
的某个地方)。但是,请尽最大努力确保没有错误(或已处理错误)。

在开发机器上设置环境变量。然后,您可以在代码的开头检查您的环境,以确保您处于开发环境中。 然后可以使用error_reporting()函数设置PHP的错误报告级别

if ( isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel') ) {
    error_reporting(E_ALL);
} else {
    error_reporting(0);
}

在PHP7.1上,接受的答案对我来说根本不起作用

这在生产环境中正常工作,将错误记录到提供的文件中,而不向用户显示:

    ini_set('display_errors', 'Off');
    ini_set('log_errors', 'On');
    ini_set("error_log", "/absolute/path/to/my/error_log");

照我说的做,你的错误将不会显示,但会被记录。我喜欢“更好”这个词而不是“最好”。作为“系统日志”的替代品,你可以放置一个文件路径并将日志写入你需要的任何位置。