我已经使用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个时,只有一个我得到这个错误。
我找不到任何空格或不受欢迎的echo
或print
。我坚持这个,我不知道要搜索什么。也许你可以给我一些建议?我知道它是无害的,我们仍然不希望在system.log中出现任何错误。
答案 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验证。