2009-04-21 9 views
1

bei dem Versuch, sich an dieser site (Benutzer: Polopolo, Pass: Samara) anmelden das Ergebnis ist eine leere Seite. Ich weiß, dass das Problem mit dem Senden von Headern und ouput_buffering in der php.ini-Datei ist. Ich hatte das gleiche Problem auf einem anderen Host, aber das Problem wurde behoben, als ich änderte output_buffering = On. Es funktioniert nicht auf dem aktuellen Host und ich frage mich warum? Irgendwelche Vorschläge?Problem mit output_buffering und php.ini

-die phpinfo der aktuellen Website.


Bearbeiten: Problem gelöst. Ich habe den Code rückentwickelt und einige zusätzliche Leerzeichen nach dem schließenden Tag php gefunden, bevor die Header gesendet wurden. Der Code wurde nicht von mir geschrieben und ich habe diese Option instinktiv ignoriert, da das ganze System bereits auf einem anderen Server funktioniert hat. Aber mein Kollege hat einige Änderungen vorgenommen, die mir nicht bewusst waren ... Die Lektion, die gelernt wurde: Teamarbeit ist wichtig und lass niemanden das Denken für dich tun. Dennoch ist es ein Rätsel für mich, nach dem Versuch, alles anzuzeigen, um Fehler anzuzeigen und vor allem die "Kann Header nicht ändern" sie nicht richtig angezeigt. Ich habe alles gemacht, was Sie mir geraten haben - Fehler anzeigen, protokollieren und so weiter ... trotzdem danke.

Antwort

3

Vermutlich führt die Seite, auf die Sie unmittelbar nach dem Anmelden treffen, eine Umleitung durch.

Für eine Umleitung muss ein HTTP-Header mit der Antwort ausgegeben werden. Das Problem ist, wenn PHP bereits damit begonnen hat, den Body des Dokuments auszugeben, kann es dann keinen Header ausgeben, weil sie Header beendet haben, als der Body gestartet wurde.

Die Pufferung der Ausgabe verhindert, dass PHP Teile des Body des Dokuments ausgibt, bis der Ausgabepuffer geleert wird (oder PHP beendet wird). So können Sie jederzeit Header ausgeben.

Jetzt, wenn die Ausgabe Pufferung auf das Problem auf der eigenen Website/Server, aber nicht auf einem anderen, das ist ein klares Anzeichen dafür, dass es nicht das gleiche Problem ist - Sie stoßen auf ein anderes Problem.

Sie sollten PHP-Fehler protokollieren, überprüfen Sie daher Ihr PHP-Fehlerprotokoll. Wenn (und nur wenn) Sie dies auf einer eingeschränkten Website nur für Entwickler sehen (was Sie nicht sind), können Sie display_errors in Ihrer PHP-Konfiguration aktivieren, die Fehler auf der Seite anzeigt, wenn sie gerendert wird. Dies wird allgemein als unsichere Einstellung auf öffentlich zugänglichen Servern angesehen, da Angreifer versuchen können, einen Fehler zu verursachen, für den die Fehlermeldung private Informationen preisgibt.

1

Ich bin kein Experte und ich kann nicht verstehen, was Ausgangspufferung mit irgendetwas zu tun, vielleicht gibt es einige Fehler im Code?

php_flag display_errors on 
php_value error_reporting 30719 

Platz in der Stammordner dieser Website und versuchen Sie dann erneut anmelden, um zu sehen, ob es irgendwelche Ausgabefehler sind:

Könnten Sie eine .htaccess-Datei mit folgendem Inhalt erstellen?

+0

versuchte es. keine Fehler auftreten.Ich denke nicht, dass es so sein soll und verrate es etwas mit den beschissenen Kopfzeilen, die ich nicht verstehe. ty obwohl – chosta

+0

Tut mir leid, ich kann nicht mehr helfen, aber Sie könnten bitte versuchen Sie es erneut, aber anstelle von 7, verwenden Sie 30719 und kommentieren Sie hier, wenn es fertig ist, damit ich es testen kann, wenn es Ihnen nichts ausmacht? –

+0

Ich denke nicht, dass die Änderungen vorhanden sind, da phpinfo() zeigt nicht die angenommenen Werte ("Ein" für display_errors; "30719" für error_reporting) –

0

Ich hatte auch das gleiche Problem während der Arbeit an einem Projekt. Ich habe es später behoben, indem ich output_buffering = 4096 in der Konfigurationsdatei php.ini eingestellt habe und es funktionierte gut in localhost, aber als ich es auf den Host-Server legte, bekam ich diesen Fehler erneut. Ich bin mir nicht sicher, wie ich meine eigene php.ini-Konfigurationsdatei auf dem Host-Server verwenden soll. Jeder Vorschlag ist willkommen ...