einfache anweisungen, aber ich komme nicht weiter ...
Sebastian Schimpf
- php
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
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
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
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
$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
Hallo Sebastian,
Bei mir hat das funktioniert, ich weiss dann leider nicht weiter, sorry.
Dieter
Trotzdem vielen Dank!
Ich muss dann eben mal sehen ...
Einen freundlichen Gruß sendet dir
Sebastian
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
Hallo Sebastian,
Freut mich, dass alles ok ist jetzt
Danke nochmal!
Passiert leider nicht allzu oft hier...
Dieter
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
Sag ich schon die ganze Zeit, if/else weglassen, die fopen Methode
wird schon sagen,was ihr nicht passt, nicht wahr (grins).
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)
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
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.