Ich habe einen VPS von 1 & 1 mit CentOS 5.2 64-bit.
Letzten Dienstag habe ich PHP aktualisiert und ImageMagick installiert, das viele andere Pakete, einschließlich Apache, MySQL, Perl usw., aktualisiert hat. Viele Sachen wurden im Laufe des Prozesses aktualisiert, aber als komplettes Noob ging ich einfach mit.
Nun ist das Problem, dass alle Webseiten so aussehen:
%Vor%(eine neue Zeile in jeder einzelnen PHP-Datei vor der Ausgabe)
Ich probierte sogar ob_start();
und die(trim(ob_get_clean()));
ohne Glück. Die neue Zeile bleibt bestehen.
Ich habe kurz /etc/php.ini
überprüft, ohne dass etwas herausragt.
Was kann ich tun?
Im Dunkeln geschossen, aber überprüfe deine php.ini auf einen auto-prepend-file
Wert. Es könnte auf eine leere Standarddatei zeigen, die zufällig einen Zeilenumbruch hat.
Der wahrscheinlichste Grund dafür ist, dass eine Basis-Include-Datei am Ende Whitespace hat. Wenn eine include-Datei außerhalb der Tags <?php
und ?>
Zeichen enthält, einschließlich Zeilenumbrüchen oder Leerzeichen, schreibt apache eine Leerzeile an den Anfang der Antwort, wie Sie es sehen.
Leider kann jede Datei in Ihrer Include-Kette der Täter sein. Wenn Sie bei einem Shared-Hosting-Anbieter sind, müssen Sie sich möglicherweise an ihren Support wenden, um sicherzustellen, dass sie kein verrücktes automatisches Einfügeverhalten oder keine Apache-Anweisungen haben, wie AlienWebguy erwähnt. Hier ist eine gute Stack Overflow-Frage zu Best Practices für Include-Dateien . (Es weist sogar darauf hin, dass Smarty, ein Drittanbieter-PHP-Templating-Plugin, Leerzeichen in seinen Include-Dateien hatte, sogar in aktuellen / aktuellen Versionen.)
Und hier ist ein wahrscheinlich aussehender Artikel, wie man Seiten mit Leerzeichen auf ihnen findet und löscht. Wenn Ihr * nix-fu ist stark genug, Sie könnten Ihre Dateistruktur mit einer Regex-Datei versehen, um einen solchen Täter zu finden. Vorbeugend postete Mario in der SO-Frage verlinkt ein paar PHP-Direktiven, die davor warnen könnten, die in einen Svn-Commit-Hook geworfen werden könnten, um solche zukünftigen Fehler zu fangen.