Заголовки Magento уже отправлены - PullRequest
4 голосов
/ 04 марта 2011

У меня проблема с заголовками, уже отправленными с Magento.Я получаю эту ошибку:

HEADERS ALREADY SENT: 
[0] /var/www/etam/trunk/src/app/code/core/Mage/Core/Controller/Response/Http.php:44
[1] /var/www/etam/trunk/src/lib/Zend/Controller/Response/Abstract.php:727
[2] /var/www/etam/trunk/src/app/code/core/Mage/Core/Controller/Response/Http.php:75
[3] /var/www/etam/trunk/src/app/code/core/Mage/Core/Controller/Varien/Front.php:188
[4] /var/www/etam/trunk/src/app/code/core/Mage/Core/Model/App.php:304
[5] /var/www/etam/trunk/src/app/Mage.php:596
[6] /var/www/etam/trunk/src/index.php:139

Я видел эту тему, но мне это мало помогло.

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

Насколько я обнаружил, это не для всех изображений, а для некоторых из них.Например, когда есть только 1 изображение, ошибки нет.Когда их 3, только для одного я получаю эту ошибку.

Я не могу найти ни пробелов, ни нежелательных echo, ни print.Я застрял с этим, и у меня нет идей, что искать.Может быть, вы могли бы дать мне несколько советов?Я знаю, что это безвредно, но мы не хотим, чтобы в system.log были какие-либо ошибки.

Ответы [ 3 ]

10 голосов
/ 15 марта 2011

Иногда мы видим «заголовки уже отправлены ...» в system.log ..., чтобы предотвратить это, мы должны возвращать наши данные в контроллеры одним из этих методов

clean way:

$this->getResponse()->setBody($response);

или грязный путь:

echo $response;

exit();

В некоторых случаях «чистый путь» неработать, поэтому мы должны использовать «грязный путь».

Используйте это, если вы получаете контент через Ajax, как это делается в CMS;)

0 голосов
/ 16 февраля 2018

В качестве альтернативы мы можем перезаписать \ app \ code \ core \ Mage \ Adminhtml \ controllers \ Cms \ WysiwygController.php так же, как это делает Magento 1.9.3.В нашем случае это изменяло эту часть функции directiveAction ()

        try {
        $image = Varien_Image_Adapter::factory('GD2');
        $image->open($url);
        $image->display();
    } catch (Exception $e) {
        $image = Varien_Image_Adapter::factory('GD2');
        $image->open(Mage::getSingleton('cms/wysiwyg_config')->getSkinImagePlaceholderPath());
        $image->display();

на

        try {
        $image = Varien_Image_Adapter::factory('GD2');
        $image->open($url);
    } catch (Exception $e) {
        $image = Varien_Image_Adapter::factory('GD2');
        $image->open(Mage::getSingleton('cms/wysiwyg_config')->getSkinImagePlaceholderPath());
    }
    ob_start();
    $image->display();
    $this->getResponse()->setBody(ob_get_contents());
    ob_end_clean();

Дополнительная информация (на немецком языке) справа здесь .Проверено с Magento CE 1.9.2.4.

0 голосов
/ 14 марта 2011

Как ни странно, я создал этот пост только сегодня утром, так как столкнулся с очень похожей проблемой при отладке Magento.

http://codemagento.com/2011/03/debugging-headers-already-sent-error/

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