kaepten: fgets Problem

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

  1. Moin!

    Auf der Glaskugel steht: Benutzerrechte.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Meinereinerselbst ist auf der Suche nach Aufträgen
    1. Moin!

      Auf der Glaskugel steht: Benutzerrechte.

      Komisch, auf meiner steht: "Kann Datei mit fopen() nicht öffnen, deswegen die Fehlermeldung". :)

      - Sven Rautenberg

      --
      ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
      1. 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®

        --
        Meinereinerselbst ist auf der Suche nach Aufträgen
    2. 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

      1. 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

        --
        ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
        1. 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

          1. 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®

            --
            Meinereinerselbst ist auf der Suche nach Aufträgen
            1. 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

              --
              Meinereinerselbst ist auf der Suche nach Aufträgen
              1. 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

                1. 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

                  --
                  ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
            2. 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

              1. 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®

                --
                Meinereinerselbst ist auf der Suche nach Aufträgen