I have an annoying HEADER ALREADY SENT error in system.log.
It is not easy to debug it, what I could do was to improve the logging to isolate the source of the issue (has described here):
Cannot send headers; headers already sent in lib/Varien/Image/Adapter/Gd2.php, line 133
Line 133 of Gd2.php
:
call_user_func($this->_getCallback('output'), $this->_imageHandler);
And it is part of the method display:
public function display()
{
header("Content-type: ".$this->getMimeType());
call_user_func($this->_getCallback('output'), $this->_imageHandler);
}
How to go on ?
Best Answer
This is a tough one. I had an errant whitespace character at the beginning of a core class definition which screwing with me for a couple months till I realized what was going on.
Someone will write an extension one day to fix this, but till they do, one way to troubleshoot in Magento would be to start output buffering manually in
index.php
, then try to catch the output culprit inVarien_Autoload
:index.php
:lib/Varien/Autoload.php
: (see note below)If you for example place a space at the beginning of
Mage/Page/Block/Html/Footer.php
then you would see the following:This won't catch everything, so the offending file won't always be line #1, but it can get you very close to the offending context.
Note: I'm using
array_column()
here, a GREAT new function from Ben Ramsey in php 5.5. Without php 5.5 you can define it using his code, which is available on Github.