Ceci est un suivi de la question sur la façon de déboguer: HEADER ALREADY SENT et GD2 . Plus précisément, comment corriger les erreurs suivantes (notez que la première ligne a été ajoutée à l'aide des conseils de débogage précédents pour suivre la source):
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 >
Cette question portait sur la façon de déboguer ce problème. Cette question est de savoir comment y remédier. Selon ma "réponse" à cette question, et après avoir effectué d'autres tests sur une installation de Magento vanilla, je peux confirmer que cela semble être un bogue de base Magento (v1.7.0.2).
La simple gestion des images sur des pages ou des blocs statiques, à l'aide du gestionnaire d'images de page / bloc standard de Magento, génère ces journaux. Pour reproduire, ouvrez une page contenant des images. Il y en aura un par image sur la page. Ouvrez le gestionnaire d'images et affichez les images téléchargées - il y en aura un autre pour chaque image affichée.
Le problème semble être lié à cette fonction qui, à ma lecture, provoquera très certainement cette erreur à chaque fois qu'une image CMS sera récupérée pour être affichée dans le tableau de bord.
public function display()
{
header("Content-type: ".$this->getMimeType());
call_user_func($this->_getCallback('output'), $this->_imageHandler);
}
Bien que cela ne semble pas avoir d'impact sur le magasin, je préfère ne pas traiter cela comme une "erreur bénigne" (car Microsoft aime appeler des choses qu'ils ne peuvent pas corriger / corriger!). Je suppose que nous pourrions simplement modifier canSendHeader () dans lib / Zend / Controller / Response / Abstract.php pour ne pas lancer d'erreur si $ file est gd2.php, mais c'est juste un méchant kludge!
À quoi cela ressemble à un moment donné avant que canSendHeaders ne soit appelé dans le cadre de l'affichage des images CMS dans le tableau de bord, $ throw ou $ this-> headersSentThrowsException doit être défini sur false afin que cela ne génère pas d'exception.
Des idées? Ou c'est ce que les propriétaires de Magento ont appris à vivre!?