Sebastian Schimpf: einfache anweisungen, aber ich komme nicht weiter ...

Hallo,

ich lerne gerade PHP und komme bei einer recht simplen Sache nicht weiter. Vielleicht kann mir jemand helfen!?

------

<?php

$woerter = array(
    "Ich ",
    "will ",
    "es ",
    "können!"
    );

implode(" ", $woerter);
$filename = "test.txt";

if (is_writable($filename))
    {
    $handle = fopen($filename, 'r+');
    fwrite($handle, $woerter);
    fclose($handle);
    }
  else
    {
    print "The file $filename is not writable";
    exit;
    }

echo "<b>"."Der Text "$woerter" wurde erfolgreich geschrieben!"."</b>";

?>

---------

Nun kommt immer die Meldung: The file test.txt is not writable
und ich habe keine Ahnung wieso. Sie ist nicht schreibgeschützt.

Gruß
Sebastian

  1. Hallo,

    $handle = fopen($filename, 'r+');

    r+ gestattet dir nur den Lesezugriff
    Zitat PHP Manual:
    'r' - öffnet die Datei nur zum Lesen und positioniert den Dateizeiger auf den Anfang der Datei.

    'r+' - Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei.

    'w' - Öffnet die Datei nur zum Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert wird versucht sie anzulegen.

    'w+' - Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen.

    'a' - Öffnet die Datei nur zum Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.

    'a+' - Öffnet die Datei zum Lesen und Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.

    Dieter

    1. Hi,

      du hast natürlich vollkommen recht.
      Ich habe nur zwischendurch mal einen anderen Buchstaben eingesetzt, wenn auch unsinnigerweise.

      mit  $handle = fopen($filename, 'a');
      funktioniert es aber genausowenig!

      Ich komme aber nicht dahinter, wo der Fehler liegt.

      Gruß
      Sebastian

      1. Hallo,

        Eines ist mir nicht gleich aufgefallen, du musst implode einer Variablen zuordnen, sonst wird das nichts. Mit anderen Worten, Du implodierst zwar das Array, aber ohne Ergebnis. Dein $woerter in fwrite arbeitet also weiterhin mit dem Array. Du hast offensichtlich error reporting in der PHP.ini ausgeschaltet, sonst haettest du eine entsprechende Fehlermeldung erhalten. So funktioniert der Code:

        <?php

        $woerter = array("Ich","will ","es ","können!");

        $woerter = implode(" ", $woerter); // hier auf zuordnung achten
        $filename = "test.txt";

        if (is_writable($filename))
            {
            $handle = fopen($filename, 'a+');
            fwrite($handle, $woerter); // sonst ist woerter hier noch ein array
            fclose($handle);
            }
          else
            {
            print "The file $filename is not writable";
            exit;
            }

        echo "<b>"."Der Text "$woerter" wurde erfolgreich geschrieben!"."</b>";

        ?>

        Dieter

        1. $woerter = implode(" ", $woerter); // hier auf zuordnung achten

          Das macht auf jeden Fall Sinn! Schon mal danke dafür!

          Doch gibt es immernoch die gleiche Meldung.
          "The file test.txt is not writable"

          Wenn ich das Array nicht umwandeln würde, müsste wenigstens das Script "Array" in die txt.Datei schreiben, aber nichtmal das geht.

          Gruß
          Sebastian

          1. Hallo Sebastian,

            Bei mir hat das funktioniert, ich weiss dann leider nicht weiter, sorry.

            Dieter

            1. Trotzdem vielen Dank!
              Ich muss dann eben mal sehen ...

              Einen freundlichen Gruß sendet dir
              Sebastian

            2. HI

              ich weiß nicht warum,
              aber es lag an der Text-Datei. Ich habe eine andere angelegt und es hat nun funktioniert. Ich hatte schon Bedenken, das PHP nicht richtig läuft. Ufff!
              So nah und doch so fern.

              Danke nochmal!
              Sebastian

              1. Hallo Sebastian,

                Freut mich, dass alles ok ist jetzt

                Danke nochmal!

                Passiert leider nicht allzu oft hier...

                Dieter

          2. Hi,

            lass Dir mal ausgeben, was is_file bzw. is_writeable ergibt
            am Besten vor der if-Anweisung
            Dei erscheinende Fehlermeldung sollte Aufschluss geben

            ciao
            romy

            --
            DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
            ->Alles ist gut wenn es aus Schokolade ist
            sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
            1. Sag ich schon die ganze Zeit, if/else weglassen, die fopen Methode
              wird schon sagen,was ihr nicht passt, nicht wahr (grins).

    2. Daran liegt das glaub ich nicht, da die fopen - funktion noch gar
      nicht zu zuge kommt. ich glaub, es handelt sich um einen Linux-
      Server, da must du erst die dateiattribute mit chmod auf nicht
      schreibgeschützt setzen, unterstützt z.B. ws_ftp (rechte Maustaste)

      1. ich glaub, es handelt sich um einen Linux-Server

        Hi,

        ich habe einen Apache Server auf meinem Rechner,
        das kann es also auch nicht sein.

        Die Umwandlung eines Arrays in einen String (implode) kann es
        auch nicht sein, da es auch ohne diese Funktion nicht läuft.
        Vielleicht sollte ich diesen Fall zu den Akten legen!?

        Oder weiß hier jemande eine Lösung?

        Gruß
        Sebastian

        1. ich habe einen Apache Server auf meinem Rechner,
          das kann es also auch nicht sein.

          Ich meinte auch Linux (Unix). es passt vielleicht die Pfadangabe
          nicht. warum lässt du nicht den if/else - zweig weg, dann gibt dir
          php die warning-message, die dir vielleicht mehr sagt.