quasi_modem: Datei wird nicht überschrieben

Hallo,

folgendes Problem:
ich öffne eine Datei und schreibe sie neu. Das Problem ist, dass die Datei mal neu geschrieben wird, und mal nicht. Ein System, wieso dies so ist, erkenne ich nicht.

Der banale Code:
        $content = "irgendwas";
        $fp = fopen($path,"w");
 echo "<span style="font-size:10px;">$fp</span>";
 fputs($fp,$content);
 fclose($fp);

  • es liegt nicht an den chmod/Rechten.
  • $fp wird immer ausgegeben.

Wie kann ich sicherstellen/überprüfen, dass die Datei garantiert überschrieben wird und nicht nur manchmal? nixraff...

Vielen Dank!
quasi_modem

  1. Hallo,

    Wie kann ich sicherstellen/überprüfen, dass die Datei garantiert überschrieben wird und nicht nur manchmal? nixraff...

    Indem du

    fputs($fp,$content);

    als Bedingung setzt und dementsprechend eine Meldung ausgibst.

    Gruß
    Lachgas

    1. Hello,

      Wie kann ich sicherstellen/überprüfen, dass die Datei garantiert überschrieben wird und nicht nur manchmal? nixraff...

      Indem du

      fputs($fp,$content);
      als Bedingung setzt und dementsprechend eine Meldung ausgibst.

      Das 'Plattmachen' geschieht aber schon beim fopen($dateiname,'w');
      Je nach Betriebssystem kann die Datei aber mandatorisch (durch einen anderen Prozess) gesperrt sein.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
  2. Hello,

    ich öffne eine Datei und schreibe sie neu. Das Problem ist, dass die Datei mal neu geschrieben wird, und mal nicht. Ein System, wieso dies so ist, erkenne ich nicht.

    Der banale Code:
            $content = "irgendwas";
            $fp = fopen($path,"w");
    echo "<span style="font-size:10px;">$fp</span>";
    fputs($fp,$content);
    fclose($fp);

    Und gibt es Fehlermeldungen?

    Grundregel: Zum Entwickeln ALLE Fehlermeldungen einschalten.

    <?php   ### Script.php ###

    error_reporting(E_ALL);
    ini_set('track_errors','1');
    ini_set('display_errors','1');

    ...

    Und dann die Fehler auch abfragen!

    in $php_errormsg sthet immer die letzte Fehlermeldung der letzten IO-Operation, wenn es gesetzt ist.

    if(!empty($php_errormsg)) echo "<p>$php_errormsg</p>\n";

    Wie stellst Du denn fest, ob Du ein gültiges Handle bekommen hast?
    Wie stellst Du fest, welches Funktionsergebnis fputs() liefert?

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  3. Hi Quasi,

    Du kannst auch nen kleinen Umweg nehmen... so wird die Datei sicher überschrieben:
    Du legst den Content in eine neue Datei ab und löscht danach die alte und benennst die neue Datei um.

    Ungefähr so:

    $content = "irgendwas";

    $fp = fopen("neuedatei.txt","w");

    fputs($fp,$content);

    unlink ("dateialt.txt");
    rename ("neuedatei.txt","dateialt.txt");

    Aber vergiss bitte nicht die neue Datei zu sperren, das nicht mehrere Zugriffe gleichzeitig stattfinden können....

    Grüße Bobby