Komische "Session"-Warnung -> Script läuft nett

ahykes

Erfahrenes Mitglied
Moin,

ich bekomme bei ausführen meines PHP-Scriptes einen seltsamen Fehler :

Code:
Warning: session_start(): open(C:\PHP\sessiondata\sess_2068c1022422b5d677a628c8d17ecdc2, O_RDWR) failed: No such file or directory (2) in C:\Inetpub\wwwroot\TreeNew\version.php on line 114

In der Zeile 114 steht folgendes :

PHP:
session_start();
:p

Mal im ernst : Als nächtses kriege ich eine weitere Meldung:

Code:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\Inetpub\wwwroot\TreeNew\version.php:10) in C:\Inetpub\wwwroot\TreeNew\version.php on line 114

Das Script ist ein riesen Teil und an der Stelle wo es hackt soll die Seite mit Session-Daten neugeladen werden. Damit meine Formulardaten erhalten bleiben, habe ich eine Session (Zeile 114) aufgemacht!
Da ich ja weiss, dass ihr den Quellcode ganz sehen wollt, habe ich einfach mal den kompletten Text auf den Server geladen :
Hier gehts zum Quelltext

Ich habe schonmal gekuckt, ob es an den Berechtigungen liegen könnte, aber dem ist nicht so. Hmm..Weiss einer weiter? ;-]
 
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body>

Das ist dein Problem....such mal nach "headers already sent", ich kann mir vorstellen das das hier schon oft gneug abgehandelt wurde.
 
Der erste Fehler wird dadurch aber nicht behoben. Es sieht ganz so aus als wenn das Verzeichnis "C:\PHP\sessiondata" auf deinem Rechner nicht existiert. Also einfach anlegen und schon dürfte das auch funktionieren.
 
Also ich weiss nich aber ich hatte gestern erst auch den 2ten fehler, also habe ich einfach ganz oben in meine Index.php

PHP:
<? session_start(); ?>

geschrieben und schon liefen alle includeten Scripts.

Vieleicht hilft dir das ja ein bisschen.

Gruß
 
SEHR GUT! Vielen Dank schonmal.

1.) Das mit dem Sessionordner war absolut richtig- > funktioniert! :)
2.) Das mit der Indexdatei habe ich auch gemacht -> komm noch ein Fehler.

Er sagt, dass er das ein Cookie nicht setzen kann :

Code:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\Inetpub\wwwroot\TreeNew\index.php:7) in C:\Inetpub\wwwroot\TreeNew\index.php on line 7

Hat das was mit Permissions zu tun?

Ich spüre das : Wir sind sooo nah dran! :p
 
-.- lesen ist wohl nicht so deine Stärke oder? Weil sonst würdest du dir auffallen, dass er hier auch den Header verändern will, der schon weg ist...
 
Hatte mir schon fast gedacht, dass Du Dich gleich wieder so melden würdest. Aber stell Dir mal vor, dass ich das mit dem Header einfach nicht raffe. :) Was will er mir damit sagen? Was soll das mit Header? *nixpeil* ;-)
 
Der Header ist immer das, was als aller erstes vom Webserver zum Browser geschickt wird. Was da genau drin steht ist jetzt erstmal nebensächlich.

Session- und Cookie-Daten sind Teil dieses Headers. Wenn nun ein Session- oder Cookie-Befehl im Script auftaucht, dann darf vorher vom Script noch nichts an den Browser geschickt werden. (Also kein echo-Befehl und auch kein HTML-Teil), weil ja sonst damit schon der Header gesendet würde.

Alles Klar?


Abhilfe: entweder alle Cookie- und Session-Befehle vor die erste Ausgabe packen, oder mit Hilfe der Funktionen ob_start() und ob_end_flush() die Ausgabe zwischenspeichern (puffern) ;)


Dunsti
 
Abgesehen davon, dass es schon schwer wäre mal Google zu bemühen:
Header darin steht was für eine Datei geschickt wird und die Größe. Unteranderem auch ncoh andere Daten. Dieser Header wird von deinem Browser ausgewertet und zeigt so bei nem Bild das Bild an, bei html etc. Zeigt er nciht den HTML-Code an sondern jagt es durch den Renderer und bei zip etc. bietet er diran , es zu downloaden. Im Header kann unteranderem auch Zusatzdaten wie ein Befehl um nen Cookie anzulegen mitgeschickt werden. Der HEader wird aber geschickt bevor irgendwelche Daten übertragen werden.
 
Zurück