Mein PHP-Server gibt plötzlich Sitzungsfehler aus

Mein PHP-Server gibt plötzlich Sitzungsfehler aus

Ich verwende XAMPP, was im Grunde ein LAMP-Setup ist, aber für Windows. Ich verwende es seit Jahren ohne Probleme und plötzlich geben alle Seiten meiner Sites, die PHP-Sitzungen verwenden, Fehler wie diesen aus ...

Warnung: session_start() [function.session-start]: Session-Cache-Limiter kann nicht gesendet werden – Header wurden bereits gesendet (Ausgabe gestartet bei C:\webserver\htdocs\friendproject2\labs\2.php:1) in C:\webserver\htdocs\friendproject2\labs\2.php in Zeile 3.

Mir ist bewusst, dass dies im Allgemeinen auf eines von zwei Dingen zurückzuführen ist.

  1. Wenn vor dem Aufruf der Funktion session_start() Leerzeichen auf dem Bildschirm ausgegeben werden, kann dies manchmal dazu führen, dass
  2. Wenn etwas auf dem Bildschirm/im Browser gedruckt wird, bevor session_start() aufgerufen wird.

Jetzt ist mein Problem anders. Vor heute Abend hatte ich Hunderte von Dateien, die Sitzungen verwendeten, und keine davon zeigte einen dieser Fehler. Es ist nicht nur eine Datei, bei der ich einen Benutzerfehler übersehe, dies hat einfach angefangen, alle meine Dateien zu beeinflussen. Soweit ich mich erinnere, habe ich heute Abend und auch in letzter Zeit keine Änderungen an meinem Computer vorgenommen.

Was könnte die Ursache dafür sein? Es macht mich wahnsinnig und niemand scheint zu wissen, warum das passiert ist. Ich denke, es muss mit dem Server zusammenhängen

Ich kann sogar eine Datei erstellen und sie in einen beliebigen Ordner im Web meines Servers legen, und es kann sich um eine einfache Datei wie diese unten handeln, und es wird trotzdem der oben gezeigte Fehler auftreten …

<?PHP
session_start();

$_SESSION['test'] = 'test value';

echo $_SESSION['test'];
?>

Antwort1

Überprüfen Sie, ob alle Ihre Dateien mit UTF-8-Kodierung gespeichert sind. UTF-8-kodierte Dateien können eine BOM (Byte Order Mark) enthalten, um den Unterschied zwischen Big-Endian- und Little-Endian-Bytereihenfolge zu erkennen. PHP versteht BOM nicht und wenn es am Anfang der Datei darauf stößt, geht es davon aus, dass es sich um Daten handelt, und sendet sie ab – dann ist es zu spät, um Header zu ändern.

Die Lösung wäre, sicherzustellen, dass Sie Ihre Dateien als ANSI speichern - konfigurieren Sie Ihre IDE/Ihren Editor

Ich hoffe es hilft.

BEARBEITEN:

Wenn dies der Fall ist, müssen Sie wahrscheinlich viele Dateien konvertieren. Sie können versuchen, diesen Bash-Shell-Code zu verwenden, der iconv verwendet, um dies für Sie zu erledigen (angepasst von:https://stackoverflow.com/questions/1182037/osx-change-file-encoding-iconv-recursive)

for files in /mydisk/myfolder/*.php
  do
    iconv -f UTF-8 -t ISO-8859-1 "$files" "${files%.php}"
done

verwandte Informationen