mika: Problem mit fopen

Hallo Zusammen,

ich möchte ein html-File mit fopen öffnen.

Die Pfadangabe+Dateiname wird ermittelt und in der Variablen $htmlfile gespeichert.

in $htmlfile steht dann sowas wie: Verzeichnis/Unterverzeichnis/index.html

wenn ich versuche die Datei mit fopen zu öffnen:
$fp = fopen($htmlfile, 'r');

erhalte ich folgenden Fehler von PHP:

Warning: fread(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\download\pdf.php on line 26

wenn ich das fopen folgendermaßen schreibe funktioniert es:
$fp = fopen('Verzeichnis/Unterverzeichnis/index.html', 'r');

ich möchte die zu öffnende Datei aber variabel halten.

was habe ich falsch gemacht??

viele Grüße
Mika

  1. Hi,

    in $htmlfile steht dann sowas wie: Verzeichnis/Unterverzeichnis/index.html

    "Sowas wie", oder *genau* *das*?

    wenn ich versuche die Datei mit fopen zu öffnen:
    $fp = fopen($htmlfile, 'r');

    erhalte ich folgenden Fehler von PHP:

    Warning: fread(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\download\pdf.php on line 26

    Und vorher, vom fopen selber, erhaeltst du keine Fehlermeldung?

    wenn ich das fopen folgendermaßen schreibe funktioniert es:
    $fp = fopen('Verzeichnis/Unterverzeichnis/index.html', 'r');

    Dann wird die Pfadangabe in der Variablen wohl nicht stimmen.

    Hast du die wirklich *genauestens* ueberprueft?

    MfG ChrisB

    1. Hi,

      in $htmlfile steht dann sowas wie: Verzeichnis/Unterverzeichnis/index.html

      "Sowas wie", oder *genau* *das*?

      genau sowas

      wenn ich versuche die Datei mit fopen zu öffnen:
      $fp = fopen($htmlfile, 'r');

      erhalte ich folgenden Fehler von PHP:

      Warning: fread(): supplied argument is not a valid stream resource in C:\Programme\xampp\htdocs\download\pdf.php on line 26

      Und vorher, vom fopen selber, erhaeltst du keine Fehlermeldung?

      nein von fopen erhalte ich keine fehlermeldung

      wenn ich das fopen folgendermaßen schreibe funktioniert es:
      $fp = fopen('Verzeichnis/Unterverzeichnis/index.html', 'r');

      Dann wird die Pfadangabe in der Variablen wohl nicht stimmen.

      Hast du die wirklich *genauestens* ueberprueft?

      »»
      ja ich habe mir den inhalt der variablen $htmlfile am bildschirm ausgeben lassen, den text kopiert und in mein fopen eingefügt und es hat funktioniert. also ist die pfadangabe definitiv richtig

      1. Hi,

        ja ich habe mir den inhalt der variablen $htmlfile am bildschirm ausgeben lassen, den text kopiert und in mein fopen eingefügt und es hat funktioniert. also ist die pfadangabe definitiv richtig

        Na dann - zeig mal etwas mehr Code ...

        MfG ChrisB

        1. Na dann - zeig mal etwas mehr Code ...

          function getImages($filepath) {
            //index.html suchen
            $fp = opendir($filepath);
            while($file = readdir($fp)){
              //ist $file ein Verzeichnis?
              if(is_dir("$filepath/$file") && $file!='.' && $file!='..'){
                $this->getImages("$filepath/$file");
              }
              //$file ist eine Datei
              else{
                if($file == "index.html") {
                  $htmlfile = "$filepath/$file";
                }
              }
            }
            closedir($fp);

          //Pfad und Dateiname der Bilder aus index.html ermitteln
            $fp = fopen($htmlfile, 'r');
            $string = fread($fp, filesize($htmlfile));
            fclose($fp);
          }

          1. Hallo,

            function getImages($filepath) {

            # bitte immer Initialisieren!
                $htmlfile=false;

            //index.html suchen
              $fp = opendir($filepath);

            while(($file = readdir($fp)) !== false){ # Dateiname "Null"

            if(is_dir("$filepath/$file") && $file!='.' && $file!='..'){
                  $this->getImages("$filepath/$file");
                }

            //$file ist eine Datei <- das ist ein Trugschluß; daher:
                  elseif(is_file("$filepath/$file"){

            if($file == "index.html") {
                    $htmlfile = "$filepath/$file";
                  }
                }
              }
              closedir($fp);

            //Pfad und Dateiname der Bilder aus index.html ermitteln

            # HIER DIE FEHLERQUELLE:
                if($htmlfile){

            $fp = fopen($htmlfile, 'r');
                 $string = fread($fp, filesize($htmlfile));
                 fclose($fp);

            }

            }

            der Denkfehler lag darin, bedingungslos $htmlfile auszulesen. Ist in einem Verzeichnis die Datei "index.html" nicht vorhanden, ist $htmlfile "$filepath/" (Kein Inhalt als Dateiname). Das ist natürlich keine gültige Resource für fopen().

            Gruß aus Berlin!
            eddi

            1. Hello,

              while(($file = readdir($fp)) !== false){ # Dateiname "Null"

              Ist nicht Dateiname '0' der Schlingel, und nicht der String 'Null'?

              if(is_dir("$filepath/$file") && $file!='.' && $file!='..'){
                    $this->getImages("$filepath/$file");
                  }
                    //$file ist eine Datei <- das ist ein Trugschluß; daher:
                    elseif(is_file("$filepath/$file"){
                    if($file == "index.html") {
                      $htmlfile = "$filepath/$file";

              Wie war das doch gleich mit is_dir()?
              Ist das nicht auch true, wenn ein Link auf ein Directory zeigt?
              So könnte dann wieder ein zirkulärer Verlauf entstehen, wenn im Verzeichnis ein Link auf eine höhere Verzeichnisebene vorhanden ist.

              Ich habe es aber jetzt nicht ausprobiert und auch nicht in php.net nachgelsen. Komme mal wieder nicht ran an die Seite.

              Ein harzliches Glückauf

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de