Как отключить magento сообщение об ошибке magento / var / report / - PullRequest
2 голосов
/ 27 марта 2012

Я использую magento.Он продолжает генерировать файлы отчетов об ошибках в папке magento / var / report.

это не отдельный файл журнала, а тысячи файлов создаются ежедневно

Есть ли в magento какой-либо способ отключить эту функцию?

Ответы [ 4 ]

4 голосов
/ 27 марта 2012

(на данный момент у меня нет версии 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));

Это изменение одной строки, но существующее поведение магазина сохраняется.

Все, что сказано - реальное решение - это исправить ошибки.

0 голосов
/ 27 ноября 2014

Добавить следующую строку

require_once MAGENTO_ROOT.DS«ошибки».DS'report.php';

$ x = $ y + $ z;

После строки

require_once $ mageFilename;

В индексе.страница php, это заставит ошибку отображаться в report.php

0 голосов
/ 27 марта 2012

Отчеты об ошибках являются ценным инструментом, и отключив его, вы удаляете очень полезный ресурс из своего набора инструментов разработчика.Я попытался бы исправить ошибки, о которых сообщается, а не прятать сами журналы.

При этом вы можете отключить создание отчетов об ошибках одним из двух способов.Я бы порекомендовал первое, но если вы находитесь в производственной среде, возможно, вы не захотите показывать сообщения об ошибках всем.

  1. Включить режим разработчика.Это поместит сообщение об ошибке прямо на страницу, и файлы в var / report не будут сгенерированы.Есть несколько способов сделать это, вот один:

    // In index.php, after Magento is loaded but before Mage::run();
    Mage::setIsDeveloperMode(true);
    
  2. Измените разрешения для var / report так, чтобы пользователь веб-сервера (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
    
0 голосов
/ 27 марта 2012

Это то, что вам нужно сделать, перейдите по адресу: System -> Configuration -> Advanced - > Developer -> Log Settings -> Enabled = 'No'.

Если вы обращаетесь к таблицам журналов, вам нужно добавить крона, который бы это очистил.Я мог бы дать вам более подробную информацию, дайте мне знать, если это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...