如何关闭magento错误报告magento / var / report /

时间:2012-03-27 15:21:52

标签: magento

我正在使用magento。它一直在magento / var / report文件夹中生成错误报告文件。

它不是单个日志文件,而是每天生成数千个文件

magento有什么方法可以关闭这个功能吗?

4 个答案:

答案 0 :(得分:4)

(我目前没有安装1.4.0.1,但我认为这一切都大致相同)

没有配置设置。您需要自定义代码才能实现这一目标(假设政治/能力/预算阻止了明显的解决方案,即解决错误)。

当一段Magento代码调用

时会生成这些错误
Mage::printException($e);

此方法最终是require文件中的report.php

public static function printException(Exception $e, $extra = '')
{
    //...snip...
    require_once(self::getBaseDir() . DS . 'errors' . DS . 'report.php');
}

report.php包含以下内容

#File: errors/report.php
require_once 'processor.php';

$processor = new Error_Processor();

if (isset($reportData) && is_array($reportData)) {
    $processor->saveReport($reportData);
}

$processor->processReport();

这是对saveReport的调用,它会保存令你烦恼的文件

public function saveReport($reportData)
{
    $this->reportData = $reportData;
    $this->reportId   = abs(intval(microtime(true) * rand(100, 1000)));
    $this->_reportFile = $this->_reportDir . '/' . $this->reportId;    
    //...snip...
    @file_put_contents($this->_reportFile, serialize($reportData));
    //...snip...
}

这个执行链中没有任何地方(即使在剪切的代码中,我保证)是否有条件代码在写入文件或调用printException之前检查配置。这意味着实现您想要的唯一方法是手动修改文件。

如何这取决于你,如果是我,我会发表评论file_put_contents

#@file_put_contents($this->_reportFile, serialize($reportData));

这是单行更改,但以其他方式维护商店的现有行为。

所有这一切 - 真正的解决方案是修复错误。

答案 1 :(得分:0)

错误报告是一种有价值的工具,通过禁用它,您将从开发人员工具包中删除一个非常有用的资源。我会尝试修复报告的错误,而不是自己隐藏日志。

也就是说,您可以通过以下两种方式之一禁用此错误报告。我推荐第一个,但是如果你在生产环境中,你可能不希望向每个人显示错误消息。

  1. 启用开发者模式。这会将错误消息放在页面上,并且不会生成var / report中的文件。有几种方法可以做到这一点,这里有一个:

    // In index.php, after Magento is loaded but before Mage::run();
    Mage::setIsDeveloperMode(true);
    
  2. 修改var / report的权限,以便Web服务器用户(www-data,apache,具体取决于您的设置)没有写入权限。

    # If the directory is not owned by www-data this is sufficient, otherwise
    # change go-w to a-w
    $ chmod go-w var/report
    

答案 2 :(得分:0)

添加以下行

require_once MAGENTO_ROOT。 DS。 '错误'。 DS。 'report.php';

$ x = $ y + $ z;

行后

require_once $ mageFilename;

在index.php页面中,这将强制错误显示在report.php

答案 3 :(得分:-1)

这是您需要做的,请转到:System -> Configuration -> Advanced - > Developer -> Log Settings -> Enabled = 'No'

如果您要引用日志表,则需要添加一个可以清除它的cron。我可以给你更多细节,如果是这样,请告诉我。