Magento Headers已经发送

时间:2011-03-04 09:31:17

标签: magento

我已经使用Magento发送了Headers这个问题。我收到这个错误:

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

我看到了this主题,但对我帮助不大。

我发现只有在通过管理面板导航并使用WYSIWYG编辑器编辑页面时才能获得此日志。当在这样的编辑的内容有.jpg图像然后我得到这个标题已经发送错误。

据我所知,它不是适用于所有图像,而是适用于其中一些图像。例如,当只有1个图像时没有错误。当有3个时,只有一个我得到这个错误。

我找不到任何空格或不受欢迎的echoprint。我坚持这个,我不知道要搜索什么。也许你可以给我一些建议?我知道它是无害的,我们仍然不希望在system.log中出现任何错误。

3 个答案:

答案 0 :(得分:10)

有时我们会在system.log中看到“Headers Already Send ...”...为了防止这种情况,我们应该使用其中一种方法在控制器中返回我们的数据

干净的方式:

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

或肮脏的方式:

echo $response;

exit();

在某些情况下,“干净的方式”不起作用,所以我们必须使用“脏路”。

如果您通过Ajax获取内容,请使用此方法,就像在CMS中完成一样;)

答案 1 :(得分:0)

奇怪的是,我在今天早上创建了这篇文章,因为我在调试Magento时遇到了一个非常类似的问题。

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

答案 2 :(得分:0)

或者我们可以用与Magento 1.9.3相同的方式覆盖\ app \ code \ core \ Mage \ Adminhtml \ controllers \ Cms \ WysiwygController.php。在我们的例子中,这是改变函数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();

更多信息(德语)右here。已通过Magento CE 1.9.2.4验证。