Häufige Fehlermeldungen

Warning: fopen() - No such file or directory

Drucken

Diese Warnung besagt, dass die Datei oder das Verzeichnis, das mit fopen() geöffnet werden soll, nicht existiert.

Die Ursache dafür kann vielfältig sein:

  1. 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");
    ?>
  2. 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");
    ?>
Warning: fopen() - No such file or directory
http://www.php-faq.de/q-fehler-no-file.html