kathi: php Gästebuch

Hallo!

Habe versucht ein Gästebuch auf meiner Homepage einzubinden. jetzt bekomme ich aber immer diese Fehlermeldung wenn ich einen eintrag mache:

Warning: fopen(gbuch.txt): failed to open stream: Permission denied in E:\InetPub\www\hotel-hubertus\test1\gaestebuch\gaestebuch.php on line 225

Warning: fputs(): supplied argument is not a valid stream resource in E:\InetPub\www\hotel-hubertus\test1\gaestebuch\gaestebuch.php on line 226

Warning: fclose(): supplied argument is not a valid stream resource in E:\InetPub\www\hotel-hubertus\test1\gaestebuch\gaestebuch.php on line 227

die zeilen wären folgende:

$komm=ereg_replace(chr(10),"<br>",$kommentar);
  if (!file_exists("gbuch.txt")) { $datei=fopen("gbuch.txt","w"); fclose($datei); }
 $gbfile=fopen("gbuch.txt", "a");
 fputs($gbfile,"$sekunden|$anm|$nname|$email|$hpage|$komm\n");
 fclose($gbfile);

wäre froh über jeden Tipp wie ich dieses problem lösen könnte!
lg

  1. Hi kathi,

    Warning: fopen(gbuch.txt): failed to open stream: Permission denied in E:\InetPub\www\hotel-hubertus\test1\gaestebuch\gaestebuch.php on line 225

    "Permission denied" bedeutet, dass keine ausreichenden Berechtigungen da sind, diese Datei zu öffen oder beschreiben.
    Schau mal, welche Rechte das gbuch.txt hat.
    Schau mal, wem diese Datei gehört. Ich kenne mich nicht gut aus, bei den Berechtigungen, aber ich denke, die Datei sollte dem user www gehören und dieser sollte lesende / schreibende und ausführende Rechte besitzen auf diese Datei. Ich bin mir nicht sicher, ob nicht der Apache an sich noch Rechte benötigt.

    Auch hier bin ich mir nicht sicher, aber ich denke, die Gästebuch-Datei sollte ausserhalb deines dokumentroot liegen um nicht von aussen angreifbar zu sein. In diesem Falle wären die Berechtigungen nochmal anders.

    Das hier ist vielleicht dazu noch ganz interessant.

    ciao
    romy

    1. hallo romy,

      "Permission denied" bedeutet, dass keine ausreichenden Berechtigungen da sind, diese Datei zu öffen oder beschreiben. [...] Schau mal, wem diese Datei gehört. Ich kenne mich nicht gut aus, bei den Berechtigungen, aber ich denke, die Datei sollte dem user www gehören und dieser sollte lesende / schreibende und ausführende Rechte besitzen

      Das mag auf einer Linux-Maschine so sein, ja. Kathi hat aber eine Windows-Kiste, und nach den Verzeichnisnamen offenbar uch einen IIS in Betrieb und keinen Apache.

      Auch hier bin ich mir nicht sicher, aber ich denke, die Gästebuch-Datei sollte ausserhalb deines dokumentroot liegen

      Nein.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. hallo,

    Warning: fopen(gbuch.txt): failed to open stream: Permission denied in E:\InetPub\www\hotel-hubertus\test1\gaestebuch\gaestebuch.php on line 225

    Das dürfte die Zeile

    $gbfile=fopen("gbuch.txt", "a");

    betreffen. Hier hast du als Parameter "a" angegeben, weil du den Zeiger auf das Dateiende setzen möchtest. Dir ist im Handbuch möglicherweise der Hinweis entgangen: "Auf Systemen, welche zwischen Binär- und Textdateien (z.B. Windows) unterscheiden, muss die Datei mit 'b' im fopen() Mode-Parameter geöffnet werden". "a" würde ich gar nicht benutzen; es hat sich für mich als günstiger erwiesen, "rb" zu setzen und irgendeine Zeichenkette (meist einen Kommentar) zu nehmen, die durch die neue Eintragung ersetzt wird.

    Warning: fputs(): supplied argument is not a valid stream resource in E:\InetPub\www\hotel-hubertus\test1\gaestebuch\gaestebuch.php on line 226

    Das betrifft die Zeile

    fputs($gbfile,"$sekunden|$anm|$nname|$email|$hpage|$komm\n");

    Hier könnten zusätzlich die Anführungszeichen stören. Schreib deine Inhalte doch vorher zusammen in eine neue Variable, die du besipielsweise $inhalt nennen kannst.

    Warning: fclose(): supplied argument is not a valid stream resource in E:\InetPub\www\hotel-hubertus\test1\gaestebuch\gaestebuch.php on line 227

    Das ist ein Folgefehler, der verschwindet, wenn du den ersten Fehler behoben hast.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. hallo!
      danke für die infos...hab jetzt mal die parameter geändert, kommt aber immer noch der selbe fehler...

      hallo,

      Warning: fopen(gbuch.txt): failed to open stream: Permission denied in E:\InetPub\www\hotel-hubertus\test1\gaestebuch\gaestebuch.php on line 225

      Das dürfte die Zeile

      $gbfile=fopen("gbuch.txt", "a");
      betreffen. Hier hast du als Parameter "a" angegeben, weil du den Zeiger auf das Dateiende setzen möchtest. Dir ist im Handbuch möglicherweise der Hinweis entgangen: "Auf Systemen, welche zwischen Binär- und Textdateien (z.B. Windows) unterscheiden, muss die Datei mit 'b' im fopen() Mode-Parameter geöffnet werden". "a" würde ich gar nicht benutzen; es hat sich für mich als günstiger erwiesen, "rb" zu setzen und irgendeine Zeichenkette (meist einen Kommentar) zu nehmen, die durch die neue Eintragung ersetzt wird.

      1. hallo kathi,

        danke für die infos...hab jetzt mal die parameter geändert, kommt aber immer noch der selbe fehler...

        Dann überprüfe mal bitte, ob denn deine "gbuch.txt" im selben Verzeichnis liegt wie das Script, das du aufrufst.

        Ich selber benutze für mein eigenes Gästebuch eine ähnliche Konstruktion - das heißt, da gibt es auch eine Textdatei, in die die Eintragungen geschrieben werden. Allerdings nehme ich nicht fputs, sondern gleich fwrite.

        Du solltest bitte angeben, welchen Webserver du benutzt. Ich nehme an, es ist IIS, aber das mußt du schon bestätigen. Die Problematik mit den "Rechten", die romy angesprochen hat, ist nicht ganz und gar verkehrt, sie hat es bloß auf den Apache und ein UNIX-ähnliches System bezogen.

        Und noch eine Kleinigkeit: es stört sehr, wenn du das Vorgängerposting einfach so untendran hängenläßt. Zitiere den Teil oder den Satz, auf den du gezielt reagieren möchtest, aber laß ein "fullquoting" nicht einfach so unten dran herumbaumeln. Das gehört sich in diesem Forum nicht.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. hallo!

          Dann überprüfe mal bitte, ob denn deine "gbuch.txt" im selben Verzeichnis liegt wie das Script, das du aufrufst.

          Ja, die beiden dateien liegen im selben Verzeichnis.

          Ich selber benutze für mein eigenes Gästebuch eine ähnliche Konstruktion - das heißt, da gibt es auch eine Textdatei, in die die Eintragungen geschrieben werden. Allerdings nehme ich nicht fputs, sondern gleich fwrite.

          dann soll ich fputs gleich weglassen?

          Du solltest bitte angeben, welchen Webserver du benutzt. Ich nehme an, es ist IIS, aber das mußt du schon bestätigen. Die Problematik mit den "Rechten", die romy angesprochen hat, ist nicht ganz und gar verkehrt, sie hat es bloß auf den Apache und ein UNIX-ähnliches System bezogen.

          ja, verwende den IIS webserver

          Und noch eine Kleinigkeit: es stört sehr, wenn du das Vorgängerposting einfach so untendran hängenläßt. Zitiere den Teil oder den Satz, auf den du gezielt reagieren möchtest, aber laß ein "fullquoting" nicht einfach so unten dran herumbaumeln. Das gehört sich in diesem Forum nicht.

          hab verstanden....hoffe es passt so ;)

          lg kathi