session_start() funktioniert nicht


#1

Hallo,

ich teste gerade ein bisschen mit PHP auf einem Freestyle Server herum (Bin Neuling in der Materie) und bekomme folgenden Fehler: Ich möchte gerne den Inhalt einer Variable von einer Datei zu einer anderen Datei schicken mittels sessions. Nun bekomme ich aber die Fehlermeldung:

Warning: session_start() [function.session-start]: Cannot start session when headers already sent in meineDatei.php

session_start(); steht am Anfang davor ist keine Ausgabe/Leerzeichen und die Datei wurde auch als UTF-8 ohne Blom kodiert. Google hat mittlerweile auch keine Antwort mehr darauf…

Hier noch der Code:
Datei 1:
<?php
session_start();
$name = $_SESSION[‘name’];
echo $name;
?>

Datei 2
<?php
session_start();
$_SESSION[‘name’] = “Max Mustermann”;
?>

Ich hoffe ihr habt darauf eine Antwort


#2

Rufst du die Datei direkt auf oder hast du sie per include/require eingebunden?

Wenn du die Dateien direkt aufrufst und <?php jeweils direkt am Anfang der Datei steht, müsste es funktionieren.


#3

Es ist möglicher weise auch ein nicht-sichtbares Zeichen vor <? …das gehört da nämlich nicht hin und kann diesen Fehler auslösen. Öffne die Datei mal in einem anderen Editor, evtl. einem für Entwicklung/Programmierung, dann wird so etwas sicherlich angezeigt :slight_smile:

Benutze idealerweise UTF-8 als Zeichensatz im Editor, falls einstellbar.


#4

Also ich benutze Notepad++ zum coden, da habe ich auch unter Kodierung auf UTF-8 ohne Blom gestellt.

Aber mal was anderes, ich habe die Datei mal auf meinem localhost server gestartet und da lief die Datei ohne Probleme. Vielleicht haut bplaced da irgendwie auf dem Webserver irgendeine Ausgabe darüber? Weil es liegt ja offenbar nicht an der Datei, die geht ja auf localhost.


#5

Nein, das ist tatsächlich eher unwahrscheinlich. Lokale Umgebungen (insbesondere solche mit Xampp Standard-Einstellungen) sind nur sehr großzügig solche Fehler zu ignorieren - unsere Systeme sind da pingeliger.

Ich tippe hier auch stark auf ein BOM, das eine Ausgabe erzeugt.
Magst du - gerne auch per Support-Ticket oder PM - uns mal entsprechende Datei auf dem Server zeigen?
Dann kann man dir einfacher helfen als so ins Blaue hinein raten zu müssen :wink:


#6

Nicht mehr nötig :slight_smile: geht jetzt nach einiger Ausprobiererei… Auf meinen localhostserver war es egal, wo die session gestartet wurde, aber scheinbar muss auf dem Webserver die session vor dem HTML Code gestartet werden. Hab ich dann irgendwann mal probiert die session davor zu starten.

Kann jetzt sein, dass das jetzt ein ziemlich dummer Fehler war, aber mir war das nicht bewusst, die datei lief ja auch auf localhost.

Trotzdem danke für eure Hilfe


#7

Ja, das ist auch der Sinn dahinter, denn header-Ausgaben sind ja “Kopfdaten” die zuerst ankommen müssen, daher auch die Fehlermeldung, die genau das besagt.

Evtl. hast Du bei Dir http://php.net/manual/en/outcontrol.configuration.php#ini.output-buffering aktiv, da wird dies automatisch gestartet. So etwas tun wir nicht, da dies mit einer Reihe von Nachteilen behaftet ist - die Lösung dazu ist wie schon erraten einfach: header (zu denen auch Sessions gehören, da diese Cookies benutzen) vor jeglicher ander Info (HTML/Text/…) ausgeben, dann klappt das auch :slight_smile: