Steffi: Fehlermeldung beim Gästebuch!

Hallo,

bekomme diese Fehlermeldung:

Warning: fopen(http://link-homepage.de/guestbook/unique.txt): failed to open stream: HTTP wrapper does not support writeable connections. in /srv/www/htdocs/tld21/html/guestbook/guestbook.php on line 34

Warning: fgets(): supplied argument is not a valid stream resource in /srv/www/htdocs/tld21/html/guestbook/guestbook.php on line 35

Warning: rewind(): supplied argument is not a valid stream resource in /srv/www/htdocs/tld21/html/guestbook/guestbook.php on line 39

Warning: fputs(): supplied argument is not a valid stream resource in /srv/www/htdocs/tld21/html/guestbook/guestbook.php on line 40

Warning: fclose(): supplied argument is not a valid stream resource in /srv/www/htdocs/tld21/html/guestbook/guestbook.php on line 41

Ich weiß nicht was da falsch ist. Die Inhalte include ich in der index.php und deswegen treten solche Links auf:
index.php?site=guestbook

Aber wo liegt der Fehler? Falscher Pfad? Kann doch nicht sein!

VIelen Dank!

Steffi

  1. Hallo

    Poste doch mal Zeile 34 - 45 deines Scipts

    1. Hi!

      Poste doch mal Zeile 34 - 45 deines Scipts

      Okay! Das ist der Script.

      <?php
      function no_reload()
      {
          $gleichheit = false;
          if (isset($_POST["uw"])) {
              $datei = "http://link-homepage/guestbook/unique.txt";
              $fp = fopen($datei, "r+");
              $aw = fgets($fp, 30);
              if ($aw == $_POST["uw"]) {
                  $gleichheit = true;
              }
              rewind($fp);
              fputs($fp, $_POST["uw"]);
              fclose($fp);
          }
          return $gleichheit;
      }
      $unique = no_reload();
      ?>

      1. $datei = "http://link-homepage/guestbook/unique.txt";
                $fp = fopen($datei, "r+");

        Die Datei kann es doch gar nicht geben
        ---> da fehlt "www." bzw. ".de", ".com" o.ä.

        1. Hi werbeklaus,

          Die Datei kann es doch gar nicht geben
          ---> da fehlt "www."

          Nö, www. kann und sollte man durchaus weglassen

          ... bzw. ".de", ".com" o.ä.

          Auch das fehlt nicht unbedingt - schließlich kann in der hosts Datei des Servers ja ein Eintrag für "link-homepage" gemacht worden sein, auch wenn ich das hier eher nicht glaube ;-)

          MfG, Dennis.

          --
          Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
          Crypt::PasswdMD5 jetzt auch in PHP
          Denn wer 'ne Blacklist hat, muss halt daran denken, dass er manches nicht sieht... und vor dem posten die Realitaet einschalten. (Swen Wacker)
  2. Hi Steffi,

    Warning: fopen(http://link-homepage.de/guestbook/unique.txt): failed to open stream: HTTP wrapper does not support writeable connections. in /srv/www/htdocs/tld21/html/guestbook/guestbook.php on line 34

    Hier steckt der eigentliche Fehler, alle anderen Fehler sind nur Folgefehler.

    Es scheint, als wolltest du eine Datei über HTTP zum schreiben öffnen, also z.B. so:

    ~~~php // wird nicht funktionieren
      fopen("http://www.example.org/datei.txt", "w");

      
    Das kann aber gar nicht gehen, da PHP dir keine Möglichkeit bietet bzw. es diese Möglichkeit gar nicht gibt über HTTP Änderungen an Dateien auf anderen Servern vorzunehmen.  
      
    Mit fopen() kannst du \_lokale\_ Dateien (also Dateien auf dem Filesystem des PC's auf dem das PHP Script ausgeführt wird) zum Lesen und Schreiben öffnen, z.B. so:  
      
      ~~~php
    // öffnet test.txt  
      fopen("test.txt", "r+");  
      
      // öffnet test.txt aus übergeordnetem Ordner  
      fopen("../test.txt", "r+");
    

    Siehe auch im PHP Manual die Beschreibung zu fopen().

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    Crypt::PasswdMD5 jetzt auch in PHP
    Man sollte nie aufhören zu fragen (Albert Einstein)
    ... aber natürlich erst, nachdem man sämliche FAQ's und Archive durchgelesen hat :-P
    1. hallo Dennis,

      Das kann aber gar nicht gehen, da PHP dir keine Möglichkeit bietet bzw. es diese Möglichkeit gar nicht gibt über HTTP Änderungen an Dateien auf anderen Servern vorzunehmen.

      Doch, das geht durchaus. Voraussetzung ist, wie in der von dir verlinkten Quelle angegeben, "PHP will check to make sure that allow_url_fopen is enabled". Ich habe sowas lokal laufen, wenn ich nicht immer die ganze URL aufrufen und mich bis zur gewünschten Unterseite durchklickern will.

      Grüße aus Berlin

      Christoph S.

      1. Hi Christoph,

        Doch, das geht durchaus. Voraussetzung ist, wie in der von dir verlinkten Quelle angegeben, "PHP will check to make sure that allow_url_fopen is enabled". Ich habe sowas lokal laufen, wenn ich nicht immer die ganze URL aufrufen und mich bis zur gewünschten Unterseite durchklickern will.

        Ja, für lesenden Zugriff geht das ja auch, die Fehlermeldung war aber "HTTP wrapper does not support writeable connections" - also Schreib-Zugriff und ich schrieb ja auch von "Änderungen", was AFAIK nicht geht/nicht gehen kann, alles allow_url_fopen hin oder her.

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
        Crypt::PasswdMD5 jetzt auch in PHP
        Krieg ist Gottes Art, den Amerikanern Geographie beizubringen. (Häfft)
        1. Hello,

          Ja, für lesenden Zugriff geht das ja auch, die Fehlermeldung war aber "HTTP wrapper does not support writeable connections" - also Schreib-Zugriff und ich schrieb ja auch von "Änderungen", was AFAIK nicht geht/nicht gehen kann, alles allow_url_fopen hin oder her.

          Da würde ich ohne in PHP reinzugucken nicht drüber entscheiden mögen.
          Wenn der Zielserver die PUT-Methode zulässt, wäre das durchaus möglich, dass der Wrapper auch eine Funktion mit schreibendem Zugriff einbindet.

          Harzliche Grüße vom Berg
          esst mehr http://www.harte-harzer.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Hi Tom!

            Ja, für lesenden Zugriff geht das ja auch, die Fehlermeldung war aber "HTTP wrapper does not support writeable connections" - also Schreib-Zugriff und ich schrieb ja auch von "Änderungen", was AFAIK nicht geht/nicht gehen kann, alles allow_url_fopen hin oder her.

            Da würde ich ohne in PHP reinzugucken nicht drüber entscheiden mögen.
            Wenn der Zielserver die PUT-Methode zulässt, wäre das durchaus möglich, dass der Wrapper auch eine Funktion mit schreibendem Zugriff einbindet.

            Man braucht noch nicht mal in den Sourcecode von PHP selber reinzuschauen - ein Blick ins Manual genügt: http://de2.php.net/manual/en/wrappers.http.php

            Table L-2. Wrapper Summary

            Attribute      Supported
            -------------------------
            ...               ...
            Allows Writing    No
            ...               ...

            Grüße,
            Fabian St.

            1. Hello Fabian,

              Man braucht noch nicht mal in den Sourcecode von PHP selber reinzuschauen - ein Blick ins Manual genügt: http://de2.php.net/manual/en/wrappers.http.php

              Table L-2. Wrapper Summary

              Attribute      Supported

              ...               ...
              Allows Writing    No
              ...               ...

              so sklavisch würde ich das Manual von PHP nicht glauben.
              Es gibt da durchaus von Zeit zu Zeit mal dinge im Source-Code, die noch nicht im Manual stehen.

              Aber die Schreibfähigkeit per HTTP ist durchaus ungewöhnlich und daher sicher auch nicht als Wrapper implementiert. Aber im HTTP Fundus ist sie eben vorgesehen!

              Harzliche Grüße vom Berg
              esst mehr http://www.harte-harzer.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              1. Hi Tom!

                Man braucht noch nicht mal in den Sourcecode von PHP selber reinzuschauen - ein Blick ins Manual genügt: http://de2.php.net/manual/en/wrappers.http.php

                Table L-2. Wrapper Summary

                Attribute      Supported

                ...               ...
                Allows Writing    No
                ...               ...

                so sklavisch würde ich das Manual von PHP nicht glauben.
                Es gibt da durchaus von Zeit zu Zeit mal dinge im Source-Code, die noch nicht im Manual stehen.

                »Sklavisch« vertraue ich ihm auch nicht, aber in diesem Punkt schon, da es sich erstens um die englische Versions des Manuals handelt, bei der ich noch nie feststellen konnte, dass sie einer größeren Änderung hinterher hinkt und zweitens weil ich _persönlich_ auch noch nie gehört habe, dass Schreibzugriff beim PHP HTTP-Wrapper möglich ist ;-)

                Aber die Schreibfähigkeit per HTTP ist durchaus ungewöhnlich und daher sicher auch nicht als Wrapper implementiert. Aber im HTTP Fundus ist sie eben vorgesehen!

                Sehe ich genauso :-)

                Grüße,
                Fabian St.

        2. hallo Dennis,

          Ja, für lesenden Zugriff geht das ja auch, die Fehlermeldung war aber "HTTP wrapper does not support writeable connections" - also Schreib-Zugriff

          okay, ich gebe zu, daß ich mir das Script, das bei mir lokal läuft, nur mal schnell angeschaut habe, ob da irgendwas von "http://" drinsteht. Ich hole mir "fremde" URLs tatsächlich nur zum Lesen, und das funktioniert ja problemlos, aber das Script, das auf meinem eigenen Webspace läuft, wechselt dann, wenn es etwas schreiben soll, natürlich nach "/".

          Grüße aus Berlin

          Christoph S.