fgets Problem
kaepten
- php
0 fastix®0 Sven Rautenberg0 fastix®
0 kaepten
Hallo Freunde
Ich wollte ein "altes" Script von mir wiederbeleben und starten. Doch eigenartigerweise habe ich folgende Fehlermeldung:
fgets(): supplied argument is not a valid stream resource
Ich weiss aber dass dieses Script einwandfrei funktioniert hat. Die Datei die ich öffne ist vorhanden und nicht schreibgeschützt.
Allerdings habe ich seit ich das Script zum letzten Mal in Betrieb hatte PHP und auch Apache neu installiert.
Kann es ein Problem an der Konfiguration / Berechtigung sein? Komisch...
Vielen Dank für Hinweise was an meinem WAMP nicht i.O ist!
kaepten
Moin!
Auf der Glaskugel steht: Benutzerrechte.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
Auf der Glaskugel steht: Benutzerrechte.
Komisch, auf meiner steht: "Kann Datei mit fopen() nicht öffnen, deswegen die Fehlermeldung". :)
- Sven Rautenberg
Moin!
Hallo Sven!
Auf der Glaskugel steht: ...
Komisch, auf meiner steht: ... was anderes
Das haben Glaskugeln so an sich :)
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo Ihr Zauberkünstler und Glakugelschauer - sagt bloss einer von Euch ist Harry Potter :-)
Dann kann mir Eure Glaskugel sicher auch sagen, warum ich "plötzlich" Berechtigungen einstellen muss. Ich schrieb ja, dass es auf meinem Win2000 schon mal gelaufen ist. Von welcher Berechtigung redet Ihr? Win2000 Filesystem? Apache? Oder gibts noch was in PHP zu berechtigen? Zumindest der Eigenschaftsdiealog zeigt "Vollzugriff" User "Jeder"... ?? Such ich am falschen Ende?
Ich weiss es echt nich, hatte schon so oft fgets benutzt, aber nun scheints bei mir nicht mehr zu wollen - was sagt die Glaskugel?
Gruss
kaepten
Moin!
Ich weiss es echt nich, hatte schon so oft fgets benutzt, aber nun scheints bei mir nicht mehr zu wollen - was sagt die Glaskugel?
fgets will wunderbar. Der Fehler liegt vorher beim Öffnen der Datei. Hatte ich ja aber schon angedeutet.
Warum das so ist, weiß ich aber natürlich nicht.
- Sven Rautenberg
Hoi Sven
Heiliger Strohsack, sorry ich war zu sehr bei fgets. Ok, zu fopen, das schaut so aus:
$lfp = fopen("test.txt","r+") || die ("Datei öffnen gescheitert!");
Dann müsste doch eingentlich die Meldung kommen wenn da was nicht geht?
Hmmmm... Ich weiss einfach nicht. He ich bin doch kein PHP Anfänger - hab schon tausendmal fopen genutzt. Wollte doch nur mal schnell das Script laufen lassen *fluch*
schnipp schnipp
<?
$lfp = fopen("test.txt","r+") || die ("Datei öffnen gescheitert!");
while($line = fgets($fp, 1000)) {
echo $line . "<br>";
}
fclose($lfp);
?>
Aber ich glaue, die Zeilen sind so trivial, dass muss was mit meinem System/Datei/Berechtigung/Konfiguration zu tun haben.
Gruss
kaepten
Moin!
$lfp = fopen("test.txt","r+") || die ("Datei öffnen gescheitert!");
while($line = fgets($fp, 1000)) {
$lfp = fopen("test.txt","r+") || die ("Datei öffnen gescheitert!");
while($line = fgets($lfp, 1000)) {
Siehst Du den kleinen Unterschied?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
Siehst Du den kleinen Unterschied?
Mit "Glaskugel" bemeckern "wir" °) hier immer das Fehlen des relevanten Quelltextes, vollständiger Fehlermeldungen oder der "falschen" Ausgaben :)
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
°) ich kann nicht für alle sprechen
Hoi fastnix
Glaskugel hin oder her - ich hätte den Code von anfang an posten müssen das stimmt - denn es liegt tatsächlich an der Syntax. Aber ganz wo anders:
$lfp = fopen("test.txt","r") || die ("Datei öffnen gescheitert!");
darf scheinbar nicht (mehr) sein.
$lfp = fopen("test.txt","r");
geht.
cheers
kaepten
Moin!
Hoi fastnix
Glaskugel hin oder her - ich hätte den Code von anfang an posten müssen das stimmt - denn es liegt tatsächlich an der Syntax. Aber ganz wo anders:
$lfp = fopen("test.txt","r") || die ("Datei öffnen gescheitert!");
darf scheinbar nicht (mehr) sein.
"||" sollte man bei solchen Konstrukten vermeiden und stattdessen "or" verwenden. Denn diese unterschiedlichen Oder-Verknüpfungen machen unterschiedliche Dinge.
Siehe dazu auch:
http://de2.php.net/manual/de/function.fopen.php
Dort gibts eine Anmerkung:
slevy1 at pipeline.com
30-Dec-2001 01:54
Attn Perl Programmers:
If you are used to writing script like
do something || die("no can do");
note that in php || has a higher precedence than =
So, don't write:
$h = fopen("$filename", "r") || die("cannot open $filename");
b/c this will overwrite the file ptr!
Now, or has a lower precedence than || and is also lower than =
So, you may write:
$h = fopen("$filename","r") or die("cannot open $filename");
However, you may avoid the entire issue with code like this:
$h = fopen("$filename","r");
if (!$h) {
die("unable to open $filename");
}
- Sven Rautenberg
Hoi fastnix
Siehst Du den kleinen Unterschied?
Ja, aber es ist nicht der Fehler. Es war der hilflose (und falsche) Versuch den original Code in zwei drei Zeilen zum testen auszulagern. Dass ich dabei noch falsch tippe ist - da hast Du recht - mehr als peinlich.
MFFG (Mit freundlich- friedfertigem Grinsen)
Würde gerne mitgrinsen. Kann aber nicht. Übrigens mach readfile() überhaupt keine zicken...
kaepten
Moin!
Würde gerne mitgrinsen. Kann aber nicht. Übrigens mach readfile() überhaupt keine zicken...
Dann kanns an den Dateirechten nicht liegen.
Checkliste:
Verzeichnis stimmt [ ]
Dateiname stimmt [ ]
Dateihandle/Referenz stimmt [ ]
Andere Fehler an anderer Stelle ausgeschlossen [ ]
Jetzt poste halt alles. Besonders auch die vollständige Fehlermeldung.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®