[PHP] - Ich bin am verzweifeln.... :(((



  • HI Leute.

    Ich habe in PHP vor, eine Datei online zu editieren.
    Das anzeigen geht ja ganz gut im Textfeld und auch das andere zeugs.
    eine index.html liegt im verzeichnis "pages" dessen CHMOD 777 hat und soll editiert werden. Also lasse ich den Inhalt anzeigen (geht supi 🙂 ).,

    edit.php

    <?php
    $open_file = "pages/".$file;
    $fpa = fopen ($open_file, "r");
    $data = fread ($fpa, filesize ($open_file));
    echo "<br><br>";
    echo "<form method=\"post\" action=\"write_file.php?open_file=$open_file\">";
    echo "<textarea name=\"file\" rows=\"40\" cols=\"120\">".$data."</textarea>";
    echo "<input type=submit value=\"Ändern\"></form>";
    
    fclose($fpa);
    ?>
    

    Okay. Jetzt möchte ich das geänderte NEU in dieselbe Datei index.html schreiben lassen, dazu aber muss die Datei erst von 644 auf den CHMOD 777 geändert werden. Und genau das ist das Problem, denn bei mir kommt folgende Fehlermeldung 😞 :

    Warning: chmod(): Unable to open in /usr/local/apache/www/web141/html/pages/pages/index.html on line 142

    Warning: fopen(pages/index.html): failed to open stream: Permission denied in /usr/local/apache/www/web141/html/write_file.php on line 143

    Warning: fwrite(): supplied argument is not a valid stream resource in /usr/local/apache/www/web141/html/write_file.php on line 144

    Warning: fclose(): supplied argument is not a valid stream resource in /usr/local/apache/www/web141/html/write_file.php on line 145

    Der Inhalt der write_file.php

    <?php
    $dir = $DOCUMENT_ROOT."/pages/";
    umask(0000);
    chmod($dir.$open_file, 01777);
    $data_inhalt = htmlentities($data_inhalt);
    $fp = fopen($open_file, "w+");
    fwrite($fp, $data_inhalt);
    fclose($fp);
    
    echo "Die Datei ".$open_file." wurde <b>erfolgreich</b> geändert!";
    echo "<hr><a href=\"file_verwaltung.php\">[Zurück]</a>";
    ?>
    

    Wenn ich nun aber

    $DOCUMENT_ROOT."/";

    nehme, hat der zwar .../html/pages/index.html doch gibt der dann die Fehlermeldung

    Warning: chmod() Operation permitted

    aus.

    Aber warum schreibt der mir pages/pages ?? obwohl ich doch NUR 1 mal Pages möchte?? wenn ich $DOCUMENT_ROOT."/pages/"; hab???

    Wenn ihr wollt dürft ihr es gerne selbst unter http://www.swiss-portal.com/edit.php?file=index.html ausprobieren! 😃

    mfg
    Programmer

    PS: Danke zum voraus! 🙄



  • Du hast keine Erlaubnis die PHP Funktion chmod auszuführen, das ist alles.
    Logg dich mit einem ftp ein und geb der index.html da chmod 777.
    Der mod wird mit fopen w nicht verändert, daher kannst du die Datei jederzeit wieder überschreiben.

    und
    $dir = DOCUMENTROOT."/pages/";kannstduinDOCUMENT_ROOT."/pages/"; kannst du in dir = $DOCUMENT_ROOT;
    ändern weil document_root immer das Verzeichnis angibt wo die grad ausgeführte PHP Datei drinsteht, was in diesem Falle /usr/local/apache/www/web141/html/pages ist

    *edit*
    hmm dochn paar Fehler zuviel als das mans lesen könnte 😃



  • dreaddy schrieb:

    du hast keine Erlaubnis den Funktoni chmod auszuführen, das ist alles.Logg dich mti nem ftp ein und geb der einmal index.html 777 und fertig.

    diese 2 Zeilen geben Auskunft über die Qualität dieses Threads ! ...



  • 1ntrud0r schrieb:

    dreaddy schrieb:

    du hast keine Erlaubnis den Funktoni chmod auszuführen, das ist alles.Logg dich mti nem ftp ein und geb der einmal index.html 777 und fertig.

    diese 2 Zeilen geben Auskunft über die Qualität dieses Threads ! ...

    Wenn ich der index.html CHMOD 777 gebe klappts ja.
    Aber da das Script schlussendlich für den Webspace genutzt werden soll und der User seine Daten hochlädt möchte ich, das PHP diese selber in CHMOD 777 umwandelt, dann ändert und nach der änderung wieder zum alten chmod.

    Denn es wäre ja mühsam wenn ich das immer für jeden User (zb., mal 50 Stück?) manuell und selber tun müsste. Wäre zu umständlich und diese User wollen vielleicht ja nicht mal das jeder auf die datei zugriff, also NICHT 777 hat!

    mfg
    Pro 😃



  • dreaddy schrieb:

    Du hast keine Erlaubnis die PHP Funktion chmod auszuführen, das ist alles.

    Der mod wird mit fopen w nicht verändert, daher kannst du die Datei jederzeit wieder überschreiben.

    Jederzeit?? Nein! Bei mir kommt dann die fehlermeldung FAILED aufgrund keine Rechte also fehlen die CHMOD 777. Daher müsste die Datei erst auf 777 gesetzt, danach geändert und schlussendlich wieder auch chmod 755 gesetzt werden.

    Wenn du verstehst was ich meine. *g* 😃

    mfg
    Pro



  • eine datei worldwriteable zu machen ist genauso wie seine türe offen zu lassen ... und nen weg zum schatz auf den boden zu malen ...

    außerdem war das noch eine anspielung auf die grammatik etc ..

    edit:
    http://www.swiss-portal.com/edit.php?file=./../config.php



  • 1ntrud0r schrieb:

    eine datei worldwriteable zu machen ist genauso wie seine türe offen zu lassen ... und nen weg zum schatz auf den boden zu malen ...

    Und genau aus diesem Grund möchte ich erst VOR dem ändern auf CHMOD777, anschliessenhd wieder zurücksetzen. *g*

    Und der User hat eh NUR auf die Files zugriff, die niemandem schaden! 😃
    PS: Sicherheitslücke behoben.



  • ähm das geht immer noch ? siehe link ?



  • In dem Falle wird das wohl erst gehen wenn dir der Webserver die Erlaubnis gibt chmod per php zu setzen oder wenn du dich per php in den ftp der Seite einwählst und da die Rechte setzt.



  • Dieses Script ... ist so wie es ist die größte Schei*****e die es gibt da brauch man nicht diskutieren 😉 😉 😉



  • wielang willst du das Sicherheitsloch eigentlich noch auflassen ?



  • das ist einfach nur LOL
    Wie wärs, wenn er ne Input-Box macht, die den Inhalt direkt an die exec() Funktion übergibt? 😃
    Nix für ungut, aber solche Fehler DÜRFEN nicht passieren.

    mfg, Bloops.



  • *NoComment*



  • So jetzt noch konstruktive ... vorschläge .. !

    Online zu editieren ist ja gar kein so schlechter Ansatz ... ! Du solltest dir nur im klaren sein das du nur den inhalt und nicht den text ändern willst .. und der beste ort zur verwaltung von text ist ne datenbank
    ...


Anmelden zum Antworten