kostenloser Webspace werbefrei: lima-city


fopen und fwrite scheint nichts zu tun

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    badiya

    Kostenloser Webspace von badiya, auf Homepage erstellen warten

    badiya hat kostenlosen Webspace.

    Hi!

    Ich habe ein kleines Script geschrieben welches Zeilen aus einer ref="/tag/datei">Datei löscht.

    Lokal auf dem Xampp funktioniert das alles wunderbar, aber hier auf lima-city geht es nicht. Ich habe schon gesucht und grundsätzlich müsste es ja erlaubt sein?

    Ebenso habe ich die zugriffsrechte für die ausführende Datei und das gesamte Verzeichnis wo das Chatscript liegt auf 777 gesetzt. Es tut aber dennoch nichts.

    Es wird auch korrekt ausgeführt und es tauchen auch keine Fehlermeldungen auf. Ich bin echt ratlos, hat hier noch jemand eine Idee woran es liegen könnte?

    HIer das script, wirklich simpel... Es sucht einen timestamp aus dem html kommentar und verleicht diesen mit einem anderen timestamp und je nach dem löscht es die zeile aus dem array und beschreibt damit die Datei neu...

    //delete shouts older than 24h
    
    //zeilen suchen, in der datum älter als 24 h ist, in $zeile speichern
    $file=BASEURL . 'content/themes/' . THEME.'chat/msg.html';
    $datei = file($file);
    $i=0;
    foreach ($datei as $zeile) {
        //search for timestamp in comment
    	preg_match('/^<!--([0-9]*)-->/', $zeile, $res);
        //count 24h back
        $bevor24 = time() - 86400;
        //if shout is older than 24, get it deleted from array
        if (isset($res[1])){
            if ($res[1] < $bevor24) {
                unset($datei[$i]);
            }
        }
        $i++;
    }
        $handler = fOpen(' /xxxpfadxxx/chat/msg.html' , "w+");
        // Dateiinhalt in die Datei schreiben
        fwrite($handler, implode('', $datei)); 
        fClose($handler); // Datei schließen   
    ?>


    das unset wird auf jeden fall ausgeführt und wie gesagt, lokal tuts ja genau was es soll...

    Beitrag zuletzt geändert: 16.6.2011 20:35:02 von badiya
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Poste mal den (mit echo ausgegebenen) Inhalt von $file.
    Ich schätze mal dort liegt die Fehlerquelle...

    Und was ist das?
    $handler = fOpen(' /xxxpfadxxx/chat/msg.html' , "w+");


    xxxpfadxxx??


    Beitrag zuletzt geändert: 17.6.2011 3:34:15 von simuliertes
  4. Autor dieses Themas

    badiya

    Kostenloser Webspace von badiya, auf Homepage erstellen warten

    badiya hat kostenlosen Webspace.

    Thanks!

    Also das xxxPfad ist der absolute und vollständige pfad, den schreib ich natürlich nicht hier rein. Aber das stimmt schon, habs überprüft:

    Das echo sähe folgendermassen aus:

    User: (14.06 - 12:33) asdf asdf asdf
    
    
    User: (14.06 - 12:33) ME TEST
    
    
    User: (14.06 - 12:35) asdf
    
    
    User: (14.06 - 12:35) asdf
    
    
    User: (14.06 - 12:36) sdfasdfasdf awerase
    
    
    User: (14.06 - 11:39) asdf
    
    
    User: (14.06 - 19:37) Diese Nachricht ist ein Test und bleibt 24h stehen! :D
    
    
    User: (15.06 - 23:43) test
    
    
    User: (16.06 - 20:14) wieder ein test! irgendwas stimmt nicht
    
    
    User: (16.06 - 20:14) und noch ein test
    
    
    User: (16.06 - 20:36) das löschen will noch nicht so ganz


    Hilft aber nicht viel oder?

    Wie gesagt, ich habe das script natürlich komplett gecheckt, und die Zeile mit dem Unset wird auf jedenfall richtig ausgeführt. Lokal funktioniert das alles ja wunderbar!

    Ebenso habe ich mir das Array nochmal ausgeben lassen nach der Schleife. Es sind korrekt nur die Shouts übrig geblieben, die nicht älter als 24h sind...

    *ratlos*

    Beitrag zuletzt geändert: 17.6.2011 14:43:16 von badiya
  5. Legt fopen die Datei an, wenn sie noch nicht existiert? Wenn nein: Funktioniert fopen wenn du einen relativen Pfad verwendest?

    Was gibt folgender Befehl aus (nach fopen):
    echo $handler;
    Schreibt fwrite etwas, wenn du ihn direkt mit einem String als zweiten Parameter aufrufst?
  6. Autor dieses Themas

    badiya

    Kostenloser Webspace von badiya, auf Homepage erstellen warten

    badiya hat kostenlosen Webspace.

    Hmmm

    also, wenn ich die msg.html lösche, wird sie nicht angelegt bei aufruf des scripts.

    .

    Bei einem relativen Pfad hat das script keine Fehlermeldung gegeben, aber auch nichts neues getan

    .

    Das echo $handler hat überhaupt keine Ausgabe, im Quellcode sehe ich auch nichts??

    .

    Ich habe direkt in die zweite Zeile folgendes eingefügt:
    $handler = fOpen(' /xxx/chat/msg.html' , "w+");
        // Dateiinhalt in die Datei schreiben
        fwrite($handler, 'FLAFLUBB');


    Es hat sich in der msg.html aber nichts getan?



    Was bedeutet das?

    Beitrag zuletzt geändert: 20.6.2011 0:43:18 von badiya
  7. Das $handler nichts ausgibt ist ja klar, ob w+ eine Datei anlegt lässt sich durch nachschauen in der doku herausfinden. (Antwort ist: ja).
    http://de.php.net/manual/de/function.fopen.php
    Ich hatte Dich gebeten den Inhalt von $file zu posten (nicht $datei :holy:).
    Ich hab's mal selber gemacht:
    BASEURLcontent/themes/THEMEchat/msg.html

    Außerdem hast Du ein Leerzeichen vor " /xxx/chat/msg.html".
    Ich kann absolut nicht nachvollziehen weshalb Du den Pfad geheim hältst, gründe dafür sehe ich jedenfalls nicht.

    Fazit:
    Ich vermute Du schreibst in eine andere Datei als beabsichtigt. Überprüfe noch einmal Deine Pfadangaben.
    Am besten legst Du den Pfad einmalig in einer varibel ab.
    Jedenfalls kann Dir hier keiner ohne den vollständigen Code helfen.



    Beitrag zuletzt geändert: 21.6.2011 6:38:43 von simuliertes
  8. Autor dieses Themas

    badiya

    Kostenloser Webspace von badiya, auf Homepage erstellen warten

    badiya hat kostenlosen Webspace.

    Danke!

    Ahso, sorry für die Verwechslung!

    Ich habe den Inhalt von file ausgeben, es ist der korrekte Pfad, ich kann auch mit dem Pfad die html Datei direkt im Browser aufrufen.

    Ich sehe es als Sicherheits-/Datenschutztechnisch zumindest fragwürdig, den Inhalt des Chats (mit chmod 777) für die Öffentlichkeit preiszugeben. Das ist ein privater Chat und muss keiner wissen wo das liegt.


    Die Pfadangaben stimmen, aber ob du glaubst oder nicht, das Leerzeichen zuviel war das problem!!!!

    Es funktioniert jetzt! Merkwürdig, weil lokal auf dem Xampp war das Leerzeichen anscheinend egal?

    Jedoch, danke dir vielmals für deine Hilfe!!!!
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!