Fehler DateiHandle?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehler DateiHandle?

    Hi hab mich jetzt bei PHP mal ran gemacht so ein wenig mit Verzeichnissen und Dateien zu spielen und hab deswegen versucht einen kleinen OnlineEditor zu bauen, der auch zum teil funktioniert.
    Wenn ich aber was abändere(datei) dann kommt immer so ein komischer fehler...

    schaut euch das am besten mal selbst an:
    http://www.thomas-reichelt.net/scripte/editor.php
    achja insbesondere wenn man die counter.php mal aufruft kommt ein Fehler
    womit ich echt nix anfangen kann! Das ganz gleiche Script(counter.php) funzt wo anders (gleicher webspace) hab überral cmod 777

    Danke schon mal für Eure Hilfe!
    mfg Tom


    hier der Code der Page:
    PHP-Code:
    <html>
    <head>
        <title>Edito Beta 0.9b Copyright by Reichelt T.</title>
    </head>
    <h4>Unterstützte Scriptsprachen: PHP,HTML</h4>
    <body>
    <?php
    //dateiname des Editors
    $dateiname_editor "editor.php";

    //--------------------------------------Datei anschauen + änderungs Button!--------------------------------------
    IF($submit_view){

    echo
    "<form action=\"$PHP_SELF\" method=\"POST\">";
    echo 
    "<textarea rows=\"15\" cols=\"100\" wrap=\"virtual\" name=\"inhalt\">";
    $fp = @fopen($filename"r") or die ("Kann Datei nicht lesen.");
    while (
    $line fgets($fp1024)) {

    echo 
    htmlspecialchars($line);

    }

    echo 
    "</textarea><br>
    $error_script_sprache<br>
    <input type=\"hidden\" name=\"ok\" value=\"
    $ok\">
    <input type=\"hidden\" name=\"filename\" value=\"
    $filename\">
    <input type=\"submit\" name=\"submit_edit\" value=\"ändern\">
    </form>"
    ;
    fclose($fp);
    }

    //wenn button ändern gedrückt
    IF($submit_edit){

        
    // Der Dateizeiger befindet sich am Ende der Datei, und
        // dort wird $somecontent später mit fwrite() geschrieben. 
       
    $file = @fopen($filename"w") or die ("Kann Datei nicht lesen.");

       
    $inhalt_code str_replace('\"','"',$inhalt);
       
        
    // Schreibe $somecontent in die geöffnete Datei.
        
    fwrite($file$inhalt_code) or die ("Kann Datei nicht schreiben ($filename)");
        
        
    $meldung_inhalt $inhalt;
        echo 
    "CODE erfolgreich geschrieben";
        
        
    fclose($fp);

    }

    //--------------------------------------neue Datei erstellen--------------------------------------
    IF($submit_create){

    @
    fopen($newfile"w+") or die ("Kann Datei nicht erstellen.");

    echo 
    "<h4>Datei $newfile erstellt!</h4>";

    }

    //--------------------------------------Datei löschen--------------------------------------
    IF($submit_delete){

    unlink("$deletefile") or die ("Kann Datei nicht löschen.");

    echo 
    "<h4>Datei $deletefile gelöscht!</h4>";

    }
    ?>
    <?php

    //Anfangsanzeige (bei Start der Seite)

    echo"<form action=\"$PHP_SELF\" method=\"POST\">";

    //--------------------------------------Datei anschauen--------------------------------------
    $handle=opendir ('.');
    echo 
    "Dateien bearbeiten:\n<br>";
    echo 
    "<select name=\"filename\"><option>$file</option>";
    while (
    false !== ($file readdir ($handle))) {
        IF(
    $file == $dateiname_editor){  } else {
        echo 
    "<option>$file</option>"; }
    }
    closedir($handle); 
    echo 
    "</select>
    <input type=\"submit\" name=\"submit_view\" value=\"view\"><br>
    &nbsp;<a href=\"
    $filename\" target=\"new\">Datei im Browser ansehen</a>
    </form><br>"
    ;

    //--------------------------------------Datei löschen--------------------------------------
    echo"<form action=\"$PHP_SELF\" method=\"POST\">";
    $handle=opendir ('.');
    echo 
    "Dateien löschen:\n<br>";
    echo 
    "<select name=\"deletefile\"><option>$file</option>";
    while (
    false !== ($file readdir ($handle))) {
        IF(
    $file == $dateiname_editor){  } else {
        echo 
    "<option>$file</option>"; }
    }
    closedir($handle); 
    echo 
    "</select>
    <input type=\"submit\" name=\"submit_delete\" value=\"löschen\">
    </form><br>"
    ;

    //--------------------------------------Datei erstellen--------------------------------------
    echo"<form action=\"$PHP_SELF\" method=\"POST\">
    Datei erstellen:<br>
    <input type=\"text\" name=\"newfile\" value=\"
    $newfile\">
    <input type=\"submit\" name=\"submit_create\" value=\"erstellen\"><br></form>"
    ;
    ?>


    </body>
    </html>

  • #2
    Meinst du das hier:
    Warning: SAFE MODE Restriction in effect. The script whose uid is 30 is not allowed to access speicher.txt owned by uid 15704 in /home/www/htdocs/thomas-reichelt.net/scripte/counter.php on line 5
    Das sagt doch schon alles. der sog. Save Mode ist on.

    Suche danach und du wirst zahlreiche Ergebnisse bekommen...

    Kommentar


    • #3
      http://de3.php.net/manual/en/features.safe-mode.php

      Da findest du welche Funktionen im Safemode nur eingeschränkt funktionieren

      Irgendwie is die Datei weg. Das Script sieht ausserdem recht unsicher
      aus auf den ersten Blick, nya keine Ahung bin selber nicht so gut in
      Sicherheit

      Kommentar


      • #4
        jo danke erstmal für die Tipps!
        Naja also wegen der Sicherheit,das ist mir schon klar ich will jetzt erstmal das das eigentlich Script läuft und dann kann man ja mit FTP connect etc. rumspielen bis es sicher ist ;-)!
        Danke Euch Beiden werde Morgen mal weiter coden...

        Kommentar


        • #5
          hab mir das mit dem Save_mode jetzt mal angeschaut und das is ja irgendwie behindert. Heisst das jetzt das ich mein Skript in die Mülltonne werfen kann oder das ich den Savemode halt ausschalten muss?

          Kommentar


          • #6
            Wenn du dein Script releasen willst, musst du halt in die
            Readme schreiben das es nur auf nicht Safemoed Servern geht.

            Wenn du keinen Zugriff auf die php.ini hast, wirste den Mode
            nicht abschalten können.

            Kommentar


            • #7
              mhhh schade....da muss ich wohl fast mal meinen Provider anfragen....bei tripod.de geht´s zum Beispiel.
              Naja aber ich finde das halt ne schöne Sache mit PHP den so könnte man sich sein eigenes kleines Webtool für seine HP bauen oder aber auch für
              Kunden die keine Ahnung haben von FTP Hochladen etc. bzw die könnten dann halt einfach ihr Frontpage File hochladen und zu Not mit dem Editor
              leicht verändern online.
              Naja werd mein Script eben noch ein wenig verbessern bis es einwandfrei funktioniert und auch einigermaßen sicher ist.
              Danke für Eure Help.
              Gruß Tom

              ps: An alle: bei Tripod.de gehts bei levanzo.de z.b. nicht.

              Kommentar


              • #8
                was ich vergessen hatte kann man eigentlich wenn man ein file wie z.b: auch ein ordner mit mkdir(file, 777) irgendwie direkt beim createn des files
                attribute festlegen?

                Kommentar


                • #9
                  hab Heute mein PHP Buch bekommen und ein wenig rumgesucht und da steht auch was über den SaveMode drin.
                  Würde es vielleicht gehen wenn ich mit ftp_connect & ftp_login mich erst als
                  benutzer einloggen würde? Dadurch würde er mich ja als "admin" idendifizieren und somit könnte er ja auch den richtigen und wirklichen benutzer der datei oder des ornders zuordnen...
                  Ist dieser Denkansatz falsch?

                  Kommentar


                  • #10
                    Würde es vielleicht gehen wenn ich mit ftp_connect & ftp_login mich erst als benutzer einloggen würde? Dadurch würde er mich ja als "admin" idendifizieren und somit könnte er ja auch den richtigen und wirklichen benutzer der datei oder des ornders zuordnen...
                    Ist dieser Denkansatz falsch?
                    dann müsstest du aber m.e. auch das schreiben deiner dateien über ftp-funktionen machen, wenn du einfach mit php ein fopen/ fwrite machst, dann geschieht dies ja wieder mit den gleichen rechten, die der apache-benutzer hat, unter dem das php-script läuft.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      ok also würde es gehen wenn ich es mit ftp_ befehlen mache oder?
                      Oder ist das dann überhaupt zu realisieren mit den verfügbaren ftp_ Befehlen?

                      Kommentar

                      Lädt...
                      X