*.TXT-Datei erzeugen
xstream
- php
Hallo
Ich habe nach einem Beispiel zum erzeugen einer *.TXT-Datei im SELFPHP gesucht, aber nichts gefunden.
Kann mir jemand eine kleine Hilfe leisten?
Hi,
Ich habe nach einem Beispiel zum erzeugen einer *.TXT-Datei im SELFPHP gesucht, aber nichts gefunden.
Kann mir jemand eine kleine Hilfe leisten?
http://php4-forum.de/befehle/fwrite.htm
Schöne Grüße,
Julian
Ich meinte eigentlich, eine GANZ neue Datei erzeugen!
Hello,
Ich meinte eigentlich, eine GANZ neue Datei erzeugen!
dann solltest Du vorher prüfen, ob die Datei ggf. schon existiert.
Nur, wenn sie NICHT existiert, darf sie angelegt werden.
Und da sind wir auch schon beim Problem. In dem Zeitschlitz zwischen Prüfung und Erzeugung könnte jemand andees die Datei angelegt haben. Sowas kann man nur mit einer einheitlichen Locking-Strategie für ALLE Applikationen auf dem Server (mit Schreibrechten) abfangen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi Tom,
Und da sind wir auch schon beim Problem. In dem Zeitschlitz zwischen Prüfung und Erzeugung könnte jemand andees die Datei angelegt haben. Sowas kann man nur mit einer einheitlichen Locking-Strategie für ALLE Applikationen auf dem Server (mit Schreibrechten) abfangen.
Ich glaube der will gan einfach nur ne neue Datei anlegen... PHP überschreib halt die existierende Datei, falls die besteht, soviel ich weiß! (Modus "w+")...
Greets Tom1tk
Ich glaube der will gan einfach nur ne neue Datei anlegen...
Ja genau, das will ich! Ganz eifach eine neue Datei in einem Verzeichnis geht das denn nicht?
Hallo,
Ja genau, das will ich! Ganz eifach eine neue Datei in einem Verzeichnis geht das denn nicht?
Doch, das geht.
Aber PHP muss das Recht dazu haben.
Das erreichst Du z.B. mit CHMOD 777 fuer das Verzeichnis.
Oder mit CHOWN u.s.w., siehe </archiv/>
Gruesse,
Thomas
Hello,
Doch, das geht.
Aber PHP muss das Recht dazu haben.
Das erreichst Du z.B. mit CHMOD 777 fuer das Verzeichnis.
Nun war ich so lange nicht hier und DU bist vom Virus der Oberflächlichen angesteckt worden? Die Rechte 777 empfehlen doch nur die Stocherer und Blinden (nicht, die die nicht shen können, sondern, die die nicht sehen wollen).
xstream hat ganz klar danch gefragt, wie er eine NEUE Datei anlegen kann. Das geht eben nur, wenn dieselbe vorher noch nicht existiert hat.
Dann steht aber der Befehl fopen() mit den Öffnungsmodi "w" und "a" und deren Abwandlungen zur Verfügung. Außerdem könnte man noch move(), copy() und touch() benutzen. http://de3.php.net/manual/de/function.touch.php
Das Problem bei allen ist eben immer der Zeitschlitz zwischen Prüfung und Anlegeaktion.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo,
Nun war ich so lange nicht hier und DU bist vom Virus der Oberflächlichen angesteckt worden? Die Rechte 777 empfehlen doch nur die Stocherer und Blinden [...]
Ich weiss, dass CHMOD 777 nicht gerade differenziert ist.
Wenn Du auf dem Webserver Dein eigener Herr und Meister bist,
root-Zugriff hast und auf Kommandozeilen-Ebene frischfroehlich
Rechte verwalten kannst, dann kannst Du natuerlich durchaus
den "sauberen" und "korrekten" Weg gehen.
Ich denke, dass viele Leute, inklusive xstream, bloss
FTP-Zugriff auf ein paar Megabyte Webspace auf
einem "virtuellen" Server (Shared Hosting) haben.
Folgendes ist mein Halbwissen und mein vereinfachtes Verstaendnis
der Dinge - es kann auch Fehler enthalten:
Per FTP hochgeladene Dateien und Verzeichnisse gehoeren
vorerst mal dem Benutzer, als der man sich bei FTP eingeloggt hat.
Schon an die Namen zu kommen, unter denen der Webserver
und PHP laufen, ist nicht so einfach.
Wenn man die Dateien oder Verzeichnisse erst einmal
mit CHOWN "verschenkt" hat, kann man per FTP
AFAIK nicht mehr darauf zugreifen und die Dateien
auch nicht mehr ueberschreiben.
CHMOD 777 ist IMHO eine "quick-and-dirty" Loesung,
die praktisch ist und fuer den Anwender keine groesseren
Probleme macht. Die Sicherheitsrisiken sind IMHO klein.
Dass bei CHMOD 777 "die ganze Welt" Schreibrechte
habe ist ja bekanntlich ein weit verbreiteter Aberglaube.
xstream hat ganz klar danch gefragt, wie er eine NEUE Datei anlegen kann. Das geht eben nur, wenn dieselbe vorher noch nicht existiert hat.
Und eben auch nur, wenn PHP das Recht hat, in dem
Verzeichnis eine neue Datei anzulegen.
In der Praxis, wie ich sie kenne, d.h. bei den Aufgaben,
fuer die ich mit PHP gelegentlich in Dateien schreibe,
sind die Rechte der Stein des Anstosses.
Und nicht irgendwelche Zeitschlitz- und flock()
Probleme.
Dann steht aber der Befehl fopen() mit den Öffnungsmodi "w" und "a" und deren Abwandlungen zur Verfügung.
Auf fopen() und fwrite() hatte ich ich doch schon laengst hingewiesen.
Freundliche Gruesse,
Thomas
Nun, befor ihr einander schlagt, kann mir einer irgend ein Skript mit Toms variante schicken? Mit dem ()copy ()move usw?
Wenn ihr mir nicht glaubt, das ich PHP habe; http://www.hostpoint.ch
Na klar habe ich ein Shared Hosting! Nicht gleich einen ganzen Server! ;)
hi,
Nun, befor ihr einander schlagt, kann mir einer irgend ein Skript mit Toms variante schicken?
du bist bereits mehrmals aufgefordert worden, die entsprechenden befehle im manual sowie zum generellen vorgehen in tutorials nachlesen zu gehen, also _tue_ das jetzt bitte.
gruss,
wahsaga
Ich meinte eigentlich, eine GANZ neue Datei erzeugen!
Halloa,
$data_file = fopen("deineDatei/datei.txt","w+");//Datei öffnen
flock($data,LOCK_SH);//Gegen gleichzeitiges Schreiben
$newdata="Hallo Welt"; //Dein neuer String
#Daten schreiben
fwrite ($data_file,$newdata);
unset ($newdata); // Die Var $newdata löschen (optional)
flock($data,LOCK_UN); // Den Schutz aufheben
fclose($data); // Datei schließen
w+ überschreibt komplett, a+ fügt hinzu. Weiter mußt im "Manual" nachlesen...
Greets tom1tk
Hello,
Ich meinte eigentlich, eine GANZ neue Datei erzeugen!
Nehmen wir mal an, die Datei ist schon da.
$data_file = fopen("deineDatei/datei.txt","w+");//Datei öffnen
Dann ist sie nun weg. das wird den anderen Benutzer "freuen"
flock($data,LOCK_SH);//Gegen gleichzeitiges Schreiben
Zwischen dem fopen() und dem flock() kann "unendlich viel Zeit" vergangen sein und jemand eine Million Byte eingestellt haben...
Außerdem schütze flock() nicht davor, dass eine andere Applikation schreibt, die die Lockingstrategie nicht beachtet.
$newdata="Hallo Welt"; //Dein neuer String
#Daten schreiben
fwrite ($data_file,$newdata);
unset ($newdata); // Die Var $newdata löschen (optional)
wenn sie besonders große war, gar nicth falsch
flock($data,LOCK_UN); // Den Schutz aufheben
Das kann man sich schenken, da durch das fclose() auch das Locking aufgehoben wird.
fclose($data); // Datei schließen
Wenn man jetzt sicher gehen will, dass man wirklich eine neue Datei erzeugt, dann müsste man mit mandatory Locking das Verzeichnis sperren, prüfen, ob die datei da ist, wenn nicht die Datei mit mandatory-Locking anlegen, das Verzeichnis sofort freigeben, in die datei schreiben und sie dann schließen oder freigeben.
Aber PHP unterstützt mandatory Locking von Haus aus nicht. Das bemängele ich. Allerdings setzt mandatory Locking auch sauberste Programmierung voraus. sonst steht der Server.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo,
Ich habe nach einem Beispiel zum erzeugen einer *.TXT-Datei im SELFPHP gesucht, aber nichts gefunden.
SelfPHP ist IMHO Schrott - etwas, das die Welt nicht braucht.
Lies lieber gleich das Manual. Und die dclp-FAQ.
Das ist meine Privatmeinung. ;-)
Die Manual-Kapitel zu fopen() und fwrite() sollten genuegend
Beispiele enthalten - lies auch die Benutzerkommentare!
http://www.php.net/manual/de/function.fopen.php
http://www.php.net/manual/de/function.fwrite.php
Ansonsten siehe auch:
http://www.dclp-faq.de/ch/ch-open_exec.html
Gruesse,
Thomas