如何解决:“ HEADER ALL SENTY SENT”和GD2?


8

这是有关如何调试的问题的后续内容:HEADER ALREADY SENT和GD2。具体来说,如何解决以下错误(请注意,第一行已使用以前的调试建议来添加,以跟踪源):

   2014-02-04T14:26:06+00:00 DEBUG (7): Cannot send headers; headers already sent in /home/.../lib/Varien/Image/Adapter/Gd2.php, line 133
   2014-02-05T16:14:32+00:00 DEBUG (7): HEADERS ALREADY SENT: < pre >
    [0] /home/.../app/code/core/Mage/Core/Controller/Response/Http.php:52
    [1] /home/.../lib/Zend/Controller/Response/Abstract.php:766
    [2] /home/.../app/code/core/Mage/Core/Controller/Response/Http.php:83
    [3] /home/.../app/code/core/Mage/Core/Controller/Varien/Front.php:188
    [4] /home/.../app/code/core/Mage/Core/Model/App.php:354
    [5] /home/.../app/Mage.php:683
    [6] /home/.../public_html/index.php:87
    </ pre >

这个问题是关于如何调试这个问题的。这个问题是关于如何解决它。根据我对该问题的“答案”,并在一个普通的Magento安装上进行了进一步的测试,我可以确认这确实是Magento的核心错误(v1.7.0.2)。

使用标准的Magento页面/块图像管理器仅管理页面或静态块上的图像会导致这些日志。要重现,请打开页面上有图像。页面上每个图像将记录其中之一。打开图像管理器并查看上传的图像-每个显示的图像都会有另一个。

问题似乎出在此功能上,从我的阅读中可以肯定,每当获取CMS图像以在仪表板中显示时,该功能都会导致此错误。

public function display()
    {
        header("Content-type: ".$this->getMimeType());
        call_user_func($this->_getCallback('output'), $this->_imageHandler);
    }

尽管它似乎对商店没有任何影响,但我不希望将其视为“良性错误”(因为微软喜欢称他们无法正确/解决问题!)。我想我们可以只修改lib / Zend / Controller / Response / Abstract.php中的canSendHeader(),如果$ file是gd2.php则不会抛出错误,但这只是一个讨厌的消息!

看起来是在仪表板中显示CMS图像之前调用canSendHeaders的某个时刻,应该将$ throw或$ this-> headersSentThrowsException设置为false,这样才不会生成异常。

有任何想法吗?还是这是Magento业主已经学会与之共存的东西!



您设法解决此问题了吗?我们也看到了
snh_nl

Answers:


2

这个问题将在某个时候修补。参考MPERF-7047


情况是否仍然如此,问题已解决,我在1.9.2.4中找不到修复程序?
亚伦·邦纳

1
根据昨天的说明,此问题“在EE 1.14.3.0/CE 1.9.3.0版本发布时已关闭”-JIRA中特别指出了该问题,@ AaronBonner ;-)
Benmarks

1

大声笑我解决了我的问题更改此:

/app/code/local/Cmsmart/Megamenu/Block/Navigation.php

/*
* Name Extension: Megamenu
* Version: 0.1.0

对于:

/**
* Name Extension: Megamenu
* Version: 0.1.0

-.-


因此,您网站上使用的php解释器中的一般功能不足,/*除非有其他注释,否则它就不会意识到是php注释*
Fiasco Labs

0

我在安装Magento时遇到同样的问题。以我为例,在PHP中启用output_buffering解决了此问题。在具有PHP 5.6的xampp中,默认启用output_buffering。在具有PHP 5.3的xampp中,默认禁用output_buffering。


0

作为参考,可以通过使用admin cms / wysiwyg编辑器上传一些png文件,然后查看缩略图列表来重现该问题。

我已经破解了该缩略图操作,以使用输出缓冲并使用响应对象来设置数据主体并更正Content-Type(那里的另一个错误是代码设置了gd文件类型id而不是mimetype)。

下面的代码替换了中相同名称的方法app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php。使用您喜欢覆盖此方法的任何机制(我使用了本地代码池控制器覆盖)。

/** * Generate image thumbnail on the fly */ public function thumbnailAction() { $file = $this->getRequest()->getParam('file'); $file = Mage::helper('cms/wysiwyg_images')->idDecode($file); $thumb = $this->getStorage()->resizeOnTheFly($file); if ($thumb !== false) { $image = Varien_Image_Adapter::factory('GD2'); $image->open($thumb); ob_start(); $image->display(); $imageData = ob_get_contents(); ob_end_clean(); $mimeType = image_type_to_mime_type($image->getMimeType()); $this->getResponse()->setHeader('Content-Type', $mimeType, true); $this->getResponse()->setBody($imageData); } else { // todo: genearte some placeholder } }

我也会在这里保持要点-https: //gist.github.com/ajbonner/94c8e61705bb7aa3e6feca4461d85595

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.