session_start() geht nicht mehr

Alles, was PHP betrifft, kann hier besprochen werden.

session_start() geht nicht mehr

Postby startist » 12. October 2010 10:48

Ich bin gerade am Ende mit meinem Latein. Im Zuge der Umprogrammierung meiner Homepage bin ich auf einige Hindernisse gestoßen. In Hinblick auf SEO habe ich meine "unschönen" GET-Variablen nun in "virtuelle" Verzeichnisse gepackt und über die .htaccess eine Umleitung auf die index.php erteilt.
Da ich Design und Inhalt besser trennen wollte, habe ich meine Navigation in eine XML-Datei ausgelagert. Hier hatte ich Darstellungsschwierigkeiten mit dem Zeichensatz. Deswegen habe ich den Zeichensatz auf UTF-8 umgestellt. Dazu habe ich sämtliche Dateien im UTF-8 Format neu abspeichern müssen.
Warum ich das alles erzähle? Genau ab dieser Stelle funktionierte die Funktion session_start() nicht mehr. Die klassische Fehlermeldung:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs_ed\index.php:1) in C:\xampp\htdocs_ed\index.php on line 1

Dabei wird vor jedweder Ausgabe diese Funktion gestartet. Erst danach werden Dateien mit Daten, Klassen und Funktionen etc. geladen und ausgeführt. Die alte Version geht immer noch, nur bei der Neuen klappt es nicht, dabei ist der Code am Anfang der index.php immer noch identisch.
An der .htaccess kann es nicht liegen, die hatte ich kurzerhand zum Testen gelöscht, der Fehler blieb bestehen. Bleibt nur die Umstellung auf UTF-8, nur kann ich das nicht so richtig glauben.
An irgendeiner Stelle erfolgt bereits eine Ausgabe, ich weiß nur nicht, wo. Es wird defintiv die index.php als Erstes aufgerufen und dort als Erstes die session_start() ausgeführt. Ich kapier's nicht. Hatte schon jemand ein ähnliches Problem und kann mir helfen?
Danke.
User avatar
startist
 
Posts: 55
Joined: 24. June 2008 14:10
Location: Dresden

Re: session_start() geht nicht mehr

Postby Altrea » 12. October 2010 12:04

startist wrote:Bleibt nur die Umstellung auf UTF-8, nur kann ich das nicht so richtig glauben.

Das kann schon sein. UTF-8 kann man MIT und OHNE Byte Order Mark (BOM) speichern.
der PHP Parser kann mit dem BOM (noch) nichts anfangen und gibt dieses deshalb (wie alle anderen für ihn nicht relevanten Inhalte) direkt aus. Da dies aber dazu führt, dass schonmal die Response-Headers gesendet werden und die Session darauf angewiesen ist, dass dies nicht der Fall ist, kommt es zu dieser unschönen Meldung.

Lösung ist deshalb ganz einfach: Datei als UTF-8 ohne BOM speichern. Dies solltest du in deinem Editor einstellen können.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: session_start() geht nicht mehr

Postby startist » 12. October 2010 14:21

@Altrea - Danke für deine Antwort, das war tatsächlich die Ursache .. :)
User avatar
startist
 
Posts: 55
Joined: 24. June 2008 14:10
Location: Dresden

Re: session_start() geht nicht mehr

Postby Altrea » 12. October 2010 17:19

Nichts zu danken. Freut mich, dass dir meine Antwort geholfen hat :D
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64


Return to PHP

Who is online

Users browsing this forum: No registered users and 17 guests