Ich habe mich gerade volle 2 Stunden mit einem sowas von blödem Problem herumgeschlagen….
Will man eine PHP-Session mittels session_start(); öffnen, muss man sicherstellen, dass keine Header vor Aufruf des Befehls an den Browser gesendet werden. Das ist unlängst bekannt und die erste Anlaufstelle für das Debuggen folgender Fehlermeldung:
Warning: session_start(): Cannot send session cookie – headers already sent by (output started at /home/box/public_html/im/index.php:1) in /home/box/public_html/im/index.php on line 2
Warning: session_start(): Cannot send session cache limiter – headers already sent (output started at /home/box/public_html/im/index.php:1) in /home/box/public_html/im/index.php on line 2
Wenn aber selbst Dateien mit dem Inhalt
<?php session_start(); ?>
diesen Fehler liefern, wird man erst einmal stutzig! Um es kurz zu machen, UTF-8 und eingebettetes BOM sind die Schuldigen… UTF-8 Kodierung ist wirklich praktisch und die Markierung der Datei mittels BOM noch viel mehr. Doch dass Webserver das BOM ausgeben und somit die Datei per se schon ein Zeichen sendet, bevor der richtige Dateiinhalt kommt, kann doch keiner ahnen.
Hier also die Problemlösung:
Dateien als UTF-8 aber ohne BOM speichern und die UTF-8 Kodierung als header VOR dem session_start(); Aufruf schicken.
<?php
header('Content-Type: text/html; charset=UTF-8');
session_start();
?>