Już wysłane nagłówki debugowania Magento

Otrzymuję następujący błąd w moim systemie.plik dziennika:

 2011-01-12T14:16:52+00:00 DEBUG (7): HEADERS ALREADY SENT: 
 [0] C:\xampp\htdocs\www.mysite.com\app\code\core\Mage\Core\Controller\Response\Http.php:44
 [1] C:\xampp\htdocs\www.mysite.com\lib\Zend\Controller\Response\Abstract.php:727
 [2] C:\xampp\htdocs\www.mysite.com\app\code\core\Mage\Core\Controller\Response\Http.php:75
 [3] C:\xampp\htdocs\www.mysite.com\app\code\core\Mage\Core\Controller\Varien\Front.php:188
 [4] C:\xampp\htdocs\www.mysite.com\app\code\core\Mage\Core\Model\App.php:304
 [5] C:\xampp\htdocs\www.mysite.com\app\Mage.php:596
 [6] C:\xampp\htdocs\www.mysite.com\index.php:81

Wiem, co oznacza "headers already sent", ale nie mam pojęcia, jaki plik to powoduje, a ślad nie daje mi żadnych informacji.

Czy Jest jakiś sposób na odnalezienie pliku przestępstwa?

Dzięki!
Author: Joseph Mastey, 2011-01-12

11 answers

Oto trudna droga.

Znajdź lokalizację w pliku, który dokonuje logowania

C:\xampp\htdocs\www.mysite.com\app\code\core\Mage\Core\Controller\Response\Http.php 
Mage::log('HEADERS ALREADY SENT: '.mageDebugBacktrace(true, true, true));

Dodaj logowanie, aby uzyskać kopię KAŻDEGO pliku dołączonego / wymaganego do tej pory

Mage::log(print_r(get_included_files(),true));

Możesz dodać to logowanie bezpośrednio do pliku core, jeśli pamiętasz, aby przywrócić plik do stanu przed jego pobraniem, lub możesz dodać kopię tymczasową w

app/code/local/Mage/Core/Controller/Response/Http.php

Tak długo, jak pamiętasz, aby usunąć go po zakończeniu (lub po prostu użyj Gita).

Sprawdź tę listę plików dla zwykłego białe spacje, a następnie sprawdź je pod kątem wszelkich funkcji, które mogą generować Wyjście (echo, print, readfile, jest chyba więcej)

 16
Author: Alan Storm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-26 10:40:46

Jest łatwiejszy sposób.

Spójrz na metodę canSendHeaders w pliku

lib/Zend/Controller/Response/Abstract.php

Dodaj trochę logowania do

public function canSendHeaders($throw = false)
{
    $ok = headers_sent($file, $line);
    // to get PHP's report on which file is sending a header.
    if ($ok !== false){
        Mage::log('File: ' . $file, null, 'exception.log', true);
        Mage::log('Line: ' . $line, null, 'exception.log', true);
    }

    if ($ok && $throw && $this->headersSentThrowsException) {
        #require_once 'Zend/Controller/Response/Exception.php';
        throw new Zend_Controller_Response_Exception('Cannot send headers; headers already sent in ' . $file . ', line ' . $line);
    }

    return !$ok;
}
 14
Author: Alan Storm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-07 02:53:46

Ten błąd jest wyrzucany z Mage_Core_Controller_Response_Http - > sendHeaders(). Ta funkcja wywołuje funkcję super class, która faktycznie sprawdza, czy nagłówki zostały już wysłane, Zend_Controller_Response_Abstract -> Cansendheaders().

Klasa Zend_Controller_Response_Abstract obsługuje między innymi wysyłanie nagłówków odpowiedzi i śledzenie ostatniego wysłania nagłówków (oraz z jakiego pliku i linii). Oto jak wygląda ta funkcja, i gdzie dokonamy zmiany w linii 316 do lib\Zend \ Controller \ Response \ Abstract.php:

public function canSendHeaders($throw = false) {
    $ok = headers_sent($file, $line);
    if ($ok && $throw && $this->headersSentThrowsException) {
        #require_once 'Zend/Controller/Response/Exception.php';
        throw new Zend_Controller_Response_Exception('Cannot send headers; headers already sent in ' . $file . ', line ' . $line);
    }
    return !$ok;
}

Do:

public function canSendHeaders($throw = false)
{
    $ok = headers_sent($file, $line);

    if ($ok) {
        Mage::log('Cannot send headers; headers already sent in ' . $file . ', line ' . $line, null, 'headers.log');
    }

    return !$ok;

    #if ($ok && $throw && $this->headersSentThrowsException) {
    #    #require_once 'Zend/Controller/Response/Exception.php';
    #    throw new Zend_Controller_Response_Exception('Cannot send headers; headers already sent in ' . $file . ', line ' . $line);
    #}
    #return !$ok;
}

Spowoduje to zapisanie błędu w /var/log/header.log.

 9
Author: egeelabs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-14 11:19:57

Najczęstszym miejscem, w którym napotkasz to w Magento, jest wyjście zawartości bezpośrednio z kontrolera.

Zamiast robić

echo $string; 

Wewnątrz kontrolera, zrób to:

$this->getResponse()->setBody($string);
 8
Author: xyphoid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-16 03:07:49

Ja też to widzę. Myślę, że ma to coś wspólnego z obrazami w WYSIWYG. Spróbuj obserwować dzienniki podczas przechodzenia przez administratora (zwłaszcza Strony CMS), a możesz to zobaczyć. To nieszkodliwe.

 5
Author: clockworkgeek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-12 15:35:19

Może to będzie pomocne dla kogoś: Otrzymuję podobny komunikat, gdy włączam WYSIWYG Magento podczas edycji stron w CMS - > Pages(mam WYSIWYG domyślnie wyłączony, więc muszę kliknąć "Pokaż/Ukryj Edytor", aby go włączyć). Jeśli strona zawiera znaczniki CMS takie jak na przykład:

{{store url='my-other-page'}}

Ta wiadomość pojawia się w systemie.Zaloguj się po kliknięciu "Pokaż / Ukryj edytor":

2013-04-06T11:10:38+00:00 DEBUG (7): HEADERS ALREADY SENT: <pre>[0] ...\app\code\core\Mage\Core\Controller\Response\Http.php:52
[1] ...\lib\Zend\Controller\Response\Abstract.php:766
[2] ...\app\code\core\Mage\Core\Controller\Response\Http.php:83
[3] ...\app\code\core\Mage\Core\Controller\Varien\Front.php:188
[4] ...\app\code\core\Mage\Core\Model\App.php:354
[5] ...\app\Mage.php:683
[6] ...\index.php:87
</pre>
 3
Author: zitix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-06 13:52:39

Otrzymałem ten błąd, gdy zbudowałem moje żądanie Ajax w "hacky" sposób, Echo treści bezpośrednio zamiast wysyłać je za pośrednictwem układu. Gdy wysłałem je przez układ, błędy zniknęły. Zobacz moje własne pytanie tutaj:

Najlepszy sposób na wyjście danych ajax z rozszerzenia Magento Admin

Rekwizyty dla @ alan za odpowiedź na moje pytanie.

 0
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:28

Myślę, że to może być OnePageCheckout problem z rozszerzeniem. Mam ten sam błąd w Magento i wydaje się, że ten błąd nie jest tak popularny. Również zainstalowałem OnePageCheckout. Ale, oczywiście, to może być tylko przypadek.

 0
Author: zzza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-29 20:31:18

Ten sam problem podczas wykonywania połączenia Ajax

Otrzymywałem dziennik, gdy wykonywałem wywołanie Ajax i wywoływałem szablon bezpośrednio z kontrolera.

Kiedy zmieniłem kod i utworzyłem blok w pliku XML układu. Naprawiono błąd dziennika.

 0
Author: DepH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-22 13:39:22

Mam ten sam problem podczas instalacji Magento.

W moim przypadku włączenie output_buffering w PHP rozwiązało problem.

W xampp z PHP 5.6 output_buffering jest domyślnie włączone.

W xampp z PHP 5.3 output_buffering jest domyślnie wyłączony.

 0
Author: Frank Rochlitzer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-21 15:39:15

W naszym przypadku był to błąd w Magento CE 1.9.2.4, który został naprawiony w Magento CE 1.9.3, wystąpił podczas używania WYSIWYG z obrazami. Właśnie zrobiliśmy małe rozszerzenie, które nadpisuje funkcję directiveAction () w \app\code\core\Mage\Adminhtml\controllers\CMS\WysiwygController.php. Po więcej szczegółów zobacz (w języku niemieckim) tutaj.

 0
Author: Bastian Kretzschmar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-16 16:31:30