PHP-Warnung: session_start(): Sitzung kann nicht gestartet werden, wenn Header bereits gesendet wurden
Lesezeit: 3 Minuten
Ich erhalte eine Fehlermeldung in meinem wp-debug-Protokoll mit der Aufschrift „PHP-Warnung: session_start(): Sitzung kann nicht gestartet werden, wenn Header bereits in …hooks.php in Zeile 228 gesendet wurden“. Hier ist ein Code-Snippet aus der Datei
function _action_fw_flash_message_backend_prepare() {
if ( ! session_id() ) {
session_start();
}
}
session_start(); ist auf 228. Ich habe gelesen, dass session_start die erste Codezeile sein sollte, die in der Datei ausgeführt wird. Wird die Funktionalität des Codes dadurch nicht beeinträchtigt? (Ich habe keine PHP-Erfahrung)
Aufrufe von session_start sollten ganz oben im Skript stehen, bevor HTML-Inhalte an den Browser ausgegeben wurden
– Professor Abronsius
28. Februar 2018 um 7:22 Uhr
Beantwortet das deine Frage? So beheben Sie den Fehler „Header bereits gesendet“ in PHP
– Showdev
21. Mai 2021 um 18:22 Uhr
Raul
Beweg den session_start() zum Seitenanfang. und ob_flush();in der Fußzeile oder am Ende des Skripts.
<?php
@ob_start();
session_start();
?>
Was ist das Problem und wie hilft Ihr Code?
– Showdev
21. Mai 2021 um 18:24 Uhr
In Ordnung Leute,
Hier ist die Antwort, die für mich auf 000webhost funktioniert
Wenn es Arbeit für Sie ist, vergessen Sie nicht zu gehen Kommentar und tippe positiv bewerten
Gehe zu public_html->.htacess
Datei öffnen
füge dies ein
php_flag output_buffering on;
BOOM, es ist Arbeit.
PHP Output Buffering ändert das PHP-Verhalten, um alle Daten auf einmal zu senden, anstatt zu senden, sobald sie fertig sind. Header können also nicht bereits gesendet werden, daher kein Fehler. Aber es kann die Site verlangsamen, da PHP ausgeführt werden muss, bevor etwas gesendet wird
– Jon
19. April 2021 um 13:51 Uhr
Was ist das Problem und wie hilft Ihr Code?
– Showdev
21. Mai 2021 um 18:24 Uhr
Samuel Ramzan
Nach dem Upgrade auf PHP 7.4 bekam ich dieselbe Fehlermeldung, obwohl ich alle meine Tags und Skripte an der richtigen Stelle hatte. Das Problem für mich lag in der Dokumentcodierung, es war so UTF-8also habe ich es geändert UTF-8 ohne BOM und das hat es getan. Alles ist jetzt in Ordnung.
Für mich war das eigentliche Problem ein Leerzeichen am Anfang der PHP-Datei vor dem PHP-Tag. Der folgende Code sollte die erste Zeile Ihrer PHP-Datei sein.
<?php session_start(); ?>
Das Problem tritt auf, wenn Sie HTML-Code oder sogar ein Leerzeichen vor dem obigen Code schreiben. PHP sendet Ihren HTML-Code an den Browser, weshalb der Fehler angezeigt wird, dass Header bereits an den Browser gesendet wird.
Ich habe verwendet WP-Sitzungsmanager für alle meine Projekte. Nimmt den ganzen Aufwand aus dem Erstellen einer Sitzung und Sie können verwenden $_SESSION Anrufe irgendwo in Ihrem Code. Wie in den anderen Kommentaren bereits erwähnt, müssen Sie zum Starten einer Sitzung die ausführen session_start() Funktion, bevor Ihre Header gesetzt sind, also verwenden Sie den Haken plugins_loaded um Ihre Funktion auszuführen.
function _action_fw_flash_message_backend_prepare() {
if ( ! session_id() ) {
session_start();
}
}
add_action( 'plugins_loaded', '_action_fw_flash_message_backend_prepare' );
Weine
Mach es auseinander. Öffnen und schließen Sie Ihr PHP-Header-Skript wie folgt:
<?php
session_start();
if($_SESSION['Active'] == false){ /* Redirects user to login.php if not logged in */
header("location:../index.html");
exit;
}
?>
Kelvin
Hatte das gleiche Problem, ich habe die Lösung für mich gefunden und es ist ganz einfach:
Die php-Datei sollte mit beginnen <?php und sonst nichts davor. In meinem Fall hatte ich vorher ein Leerzeichen <?php; nach dem entfernen war der fehler weg.
13629700cookie-checkPHP-Warnung: session_start(): Sitzung kann nicht gestartet werden, wenn Header bereits gesendet wurdenyes
Aufrufe von session_start sollten ganz oben im Skript stehen, bevor HTML-Inhalte an den Browser ausgegeben wurden
– Professor Abronsius
28. Februar 2018 um 7:22 Uhr
Beantwortet das deine Frage? So beheben Sie den Fehler „Header bereits gesendet“ in PHP
– Showdev
21. Mai 2021 um 18:22 Uhr