Dies ist eine Fortsetzung der Frage zum Debuggen: HEADER ALREADY SENT und GD2 . Insbesondere das Beheben der folgenden Fehler (Hinweis: Die erste Zeile wurde mithilfe vorheriger Debug-Hinweise hinzugefügt, um die Quelle zu verfolgen):
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 >
Bei dieser Frage ging es darum, wie dieses Problem behoben werden kann. Diese Frage betrifft die Behebung. Gemäß meiner "Antwort" auf diese Frage und nachdem ich einige weitere Tests für eine Vanilla Magento-Installation durchgeführt habe, kann ich bestätigen, dass dies ein Magento-Kernfehler zu sein scheint (v1.7.0.2).
Das einfache Verwalten von Bildern auf Seiten oder statischen Blöcken mithilfe des standardmäßigen Magento-Seiten- / Blockbildmanagers verursacht diese Protokolle. Öffnen Sie zum Reproduzieren eine Seite mit Bildern. Pro Bild wird auf der Seite eines davon protokolliert. Öffnen Sie den Bildmanager und zeigen Sie hochgeladene Bilder an. Für jedes angezeigte Bild wird ein anderes angezeigt.
Das Problem scheint bei dieser Funktion zu liegen, die beim Lesen mit Sicherheit diesen Fehler verursacht, wenn ein CMS-Bild zur Anzeige im Dashboard abgerufen wird.
public function display()
{
header("Content-type: ".$this->getMimeType());
call_user_func($this->_getCallback('output'), $this->_imageHandler);
}
Obwohl es keine Auswirkungen auf den Store zu haben scheint, würde ich dies lieber nicht als "harmlosen Fehler" behandeln (da Microsoft gerne Dinge nennt, die sie nicht richtig machen / beheben können!). Ich denke, wir könnten canSendHeader () in lib / Zend / Controller / Response / Abstract.php so ändern, dass kein Fehler ausgegeben wird, wenn $ file gd2.php ist, aber das ist nur ein böser Kludge!
Irgendwann, bevor canSendHeaders als Teil der Anzeige von CMS-Bildern im Dashboard aufgerufen wird, sollte entweder $ throw oder $ this-> headersSentThrowsException auf false gesetzt werden, damit keine Ausnahme generiert wird.
Irgendwelche Ideen? Oder haben Magento-Besitzer gelernt, damit zu leben?
Antworten:
Dieses Problem wird irgendwann behoben. Referenz MPERF-7047 .
quelle
lol Ich habe mein Problem gelöst, ändere dies in:
zum:
-.-
quelle
/*
sich um einen PHP-Kommentar handelt, es sei denn, er hat einen anderen*
?Ich habe das gleiche Problem bei der Installation von Magento. In meinem Fall wurde das Problem durch Aktivieren von output_buffering in PHP behoben. In xampp mit PHP 5.6 ist output_buffering standardmäßig aktiviert. In xampp mit PHP 5.3 ist output_buffering standardmäßig deaktiviert.
quelle
Als Referenz kann das Problem reproduziert werden, indem einige PNG-Dateien mit dem Administrator-Befehl cms / wysiwyg hochgeladen werden und anschließend eine Liste mit Miniaturansichten angezeigt wird.
Ich habe diese Miniaturansicht gehackt, um die Ausgabepufferung zu verwenden und das Antwortobjekt zum Festlegen des Datenkörpers und zum Korrigieren des Inhaltstyps zu verwenden (es gibt dort einen weiteren Fehler, bei dem der Code die ID des GD-Dateityps anstelle des Mimetyps festlegt).
Der folgende Code ersetzt die gleichnamige Methode in
app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php
. Verwenden Sie einen beliebigen Mechanismus, um diese Methode zu überschreiben (ich habe eine Überschreibung des lokalen Code-Pool-Controllers verwendet)./** * 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 } }
Ich werde auch hier einen Überblick behalten - https://gist.github.com/ajbonner/94c8e61705bb7aa3e6feca4461d85595
quelle