Update von 3.0: headers already sent

Fragen rund um die Installation, Administration und Benutzung von phpBB.
Forumsregeln
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
Antworten
Benutzeravatar
sepp71
Mitglied
Beiträge: 919
Registriert: 23.12.2006 00:03

Update von 3.0: headers already sent

Beitrag von sepp71 »

Hallo!
Endlich habe ich auch mit meinem bereits gut laufenden und mit diversen Modifikationen ausgestatteten Forum an das Update von 3.0. auf 3.1. gewagt. Das ist im Wesentlichen gut verlaufen, auch wenn ich es natürlich nicht geschafft habe, sämtliche Mods vor dem Update auszubauen. Einige habe ich als Extension auch schon wiedergefunden und eingebaut.

Aktuell erscheint allerdings im ACP immer noch mehrere Debug-Meldungen.
ZU dem "headers already sent" habe ich bei phpbb.com und in niederländischen sowie spanischen Foren schon ähnliche Meldungen und Lösungen gefunden, die z.T. von einem phpbb-Bug sprachen. Den KB-Artikelhabe ich auch umzusetzen versucht.Direkt übertragen konnte ich das auf mein Problem aber nicht, weil in der angemeckerten Zeile ja gar kein Code sondern nur eine Bemerkung steht. Auch in den Folgezeilen habe ich nichts ähnliches gefunden.
:roll: Hat jemand einen guten Tipp für mich? :roll:
Danke!

Sepp
[phpBB Debug] PHP Warning: in file [ROOT]/includes/acp/acp_main.php on line 481: filesize(): stat failed for ./../images/avatars/upload/php.ini
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_acp.php on line 132: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3843)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_acp.php on line 132: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3843)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions_acp.php on line 132: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3843)
Zeile 118 bis 136 der includes functions_acp.php sehen so aus:

Code: Alles auswählen

/**
    * Execute code and/or overwrite _common_ template variables after they have been assigned.
    *
    * @event core.adm_page_header_after
    * @var    string    page_title            Page title
    * @var    array    http_headers            HTTP headers that should be set by phpbb
    *
    * @since 3.1.0-RC3
    */
    $vars = array('page_title', 'http_headers');
    extract($phpbb_dispatcher->trigger_event('core.adm_page_header_after', compact($vars)));

    foreach ($http_headers as $hname => $hval)
    {
        header((string) $hname . ': ' . (string) $hval);
    }

    return;
}
und includes/functions.php ab Zeile 3831:

Code: Alles auswählen

// Check the error reporting level and return if the error level does not match
            // If DEBUG is defined the default level is E_ALL
            if (($errno & ((defined('DEBUG')) ? E_ALL : error_reporting())) == 0)
            {
                return;
            }

            if (strpos($errfile, 'cache') === false && strpos($errfile, 'template.') === false)
            {
                $errfile = phpbb_filter_root_path($errfile);
                $msg_text = phpbb_filter_root_path($msg_text);
                $error_name = ($errno === E_WARNING) ? 'PHP Warning' : 'PHP Notice';
                echo '<b>[phpBB Debug] ' . $error_name . '</b>: in file <b>' . $errfile . '</b> on line <b>' . $errline . '</b>: <b>' . $msg_text . '</b><br />' . "\n";

                // we are writing an image - the user won't see the debug, so let's place it in the log
                if (defined('IMAGE_OUTPUT') || defined('IN_CRON'))
                {
                    add_log('critical', 'LOG_IMAGE_GENERATION_ERROR', $errfile, $errline, $msg_text);
                }
                // echo '<br /><br />BACKTRACE<br />' . get_backtrace() . '<br />' . "\n";
            }

            return; 
Zeile 3843 ist die mit " echo '<b>[phpBB Debug] ..."
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: Update von 3.0: headers already sent

Beitrag von Dr.Death »

Hallo,

der Fehler, das ein "headers already sent" erscheint, liegt nicht an der includes/functions_acp.php oder auch includes/functions.php.

Es ist einfach ein "Folge Fehler" auf die allererste Fehlermeldung:

Code: Alles auswählen

[phpBB Debug] PHP Warning: in file [ROOT]/includes/acp/acp_main.php on line 481: filesize(): stat failed for ./../images/avatars/upload/php.ini
Diese Fehlermeldung wird ausgegeben bevor die eigentliche Seite generiert wird und erzeugt dann den "Headers already sent" Hinweis.


Dein Fehler liegt eigentlich nur darin, das im Verzeichnis:
images/avatars/upload/ eine Datei mit dem Namen php.ini liegt oder aber das dein Hoster die Funktion "filesize()" beschnitten hat.

Entferne mal die besagte Datei und teste erneut....

Siehe auch:
viewtopic.php?f=73&t=161353
viewtopic.php?f=73&t=222683
viewtopic.php?f=73&t=189488
Benutzeravatar
sepp71
Mitglied
Beiträge: 919
Registriert: 23.12.2006 00:03

Re: Update von 3.0: headers already sent

Beitrag von sepp71 »

Autsch, ein Volltreffer :cry:
Möglicherweise war ich das selbst, denn ich habe vor kurzem per Putty Symlinks einer php.ini selbst angelegt, um http-Caching zu justieren.
(Anleitung von hier, der Befehl war

Code: Alles auswählen

find -type d -exec ln -s $PWD/php.ini {}/php.ini \;
Das betroffene Forum liegt nicht in einem Unterverzeichnis des Ordners, von dem aus ich den Befehl gegeben habe. Im FTP-Programm sehe ich in dem Ordner auch keine php.ini.

Habe also jetzt den ganzen Ordner erst gesichert, dann gelöscht, und manuell wieder hochgeladen. Der Fehler ist verschwunden. :grin:
Der Ordner ließ sich im FTP-Programm auch gar nicht löschen, mußte dafür erst den WebspaceExplorer benutzen.

Herzlichen Dank für die prompte und qualifizierte Hilfe!

Und ein Gruß nach Xanten...

Sepp

Edit 25.03.2015:

Jetzt taucht das Problem mit den Debug-Meldungen auch in einem Forum auf, das ich noch gar nicht auf 3.1 aktualisiert habe. Ich habe den Symlink im Verdacht. Wie kann ich den Symlink wieder loswerden?
Angelegt habe ich ihn mit dem o.a. Befehl

Code: Alles auswählen

find -type d -exec ln -s $PWD/php.ini {}/php.ini \;
Das Löschen der eigentlichen php.ini hat scheinbar nicht gereicht. :roll:
Antworten

Zurück zu „Support-Forum“