Die Datei, die geöffnet werden soll, existiert nicht.
Dies passiert besonders häufig beim Zugriff auf URLs. Prüfen lässt sich die
Existenz mit einem Browser. Der häufigste Fehler ist die Verwendung von
relativen URLs. Richtig sind absolute URLs, die mit http:// oder ftp://
beginnen.
Quellcode-Beispiele:
<?php
/*
Die externe URL http://www.example.com/verzeichnis/datei.ext soll gelesen werden.
*/
/*
in diesem Fall falsch, da eine URL absolut angegeben werden muss
dieses Beispiel würde versuchen, die Datei datei.ext in
/verzeichnis auf dem eigenen Server zu öffnen.
*/
$fp = fopen("/verzeichnis/datei.ext", "r");
/* richtig */
$fp = fopen("http://www.example.com/verzeichnis/datei.ext", "r");
?>
Das Verzeichnis existiert nicht.
fopen()
erstellt keine Verzeichnisse, wenn diese
fehlen. Im Gegensatz dazu werden fehlende Dateien von
fopen()
automatisch angelegt, wenn sie zum
schreiben geöffnet werden.
Häufig wird in ChangeRoot-Umgebungen gearbeitet. Dies hat zur Folge,
dass das Root-Verzeichnis des Users (z. B. /home/user/) von der
Server-Root abweicht (/). Genaueres erfährt man durch die
Verwendung von
phpinfo()
.
Quellcode-Beispiele:
<?php
/*
die DocumentRoot sei /home/user und die zu öffnende Datei file.ext
im Verzeichnis mydir
*/
/* falsch */
$fp = fopen("/mydir/datei.ext", "r");
/* richtig */
$fp = fopen("/home/user/mydir/file.ext", "r");
?>
Desweiteren kann es vorkommen, dass sich Tippfehler im Pfad befinden.
Ein häufig übersehener Fehler sind Leerzeichen am Anfang, im Pfad
oder an dessen Ende.
Code-Beispiele:
<?php
/* falsch, Leerzeichen am Anfang */
$fp = fopen(" /verzeichnis/datei.ext", "w");
/* falsch, Leerzeichen im Pfad */
$fp = fopen("/verzeichnis/ datei.ext", "a+");
/* falsch, Leerzeichen am Ende */
$fp = fopen("/verzeichnis/datei.ext ", "r+");
/* richtig */
$fp = fopen("/verzeichnis/datei.ext", "w");
?>