Moin,
ich habe mir vor längerer Zeit einen Filemanager auf PHP-Basis gebaut. Nun habe ich einen "Bug" entdeckt. Als ich vorhin eine Datei ändern wollte, habe ich beim Absenden die Fehlermeldung gekriegt, dass keine Berechtigung auf das Verzeichnis vorliegt (vom Webserver). Da ich die Datei über mein Tool aber schon x mal geändert hatte konnte das natürlich nicht sein. Nach einem probieren ist mir aufgefallen, dass selbst wenn ich die Datei nicht speichern wollte, sondern Abbrechen gedrückt hab, dieser Fehler kam. Ansonsten arbeitete das Skript aber fehlerfrei. Die 2 Buttons "Save" und "Cancel" sind im selben Formular, so dass beim Klicken prinzipiell das Formular abgesendet wird. Nur prüft eben das Skript, welcher Button gedrückt wurde. Es muss also an dem Inhalt der Textarea liegen, den ich speichern will.
Nach einigem Probieren habe ich das Problem gefunden: Wenn in der Textarea ein "session_start();" steht, kommt genau dieser Fehler. Jeglicher anderer PHP, HTML oder Javascript-Code lässt sich aber problemlos abspeichern. Da ich mit dem Tool sehr oft und viele kleine Skripts erstelle, ist das natürlich schlecht, auch wenn ich Sessions relativ wenig brauche.
Meine Frage wäre jetzt: Woran liegt es, dass der Webserver einen Berechtigungsfehler bringt? Hat jemand eine Idee? (etwas Code am Ende)
Grüße Marco
Etwas Code:
Formular zum Bearbeiten einer Datei:
if(isset($_POST["action"])&&$_POST["action"]=="edit"&&$config["edit"]==1) {
print ' <form action="'.$_SERVER['PHP_SELF'].'" method="post"><fieldset>
<textarea cols="60" rows="15" name="newcontent">'.htmlspecialchars(file_get_contents($_POST["filename"]), ENT_QUOTES).'</textarea><br />
<input type="hidden" name="action" value="editsure" /><input type="hidden" name="filename" value="'.$_POST["filename"].'" />
<input type="submit" name="subbut" value="Save" style="float:left;" /><input type="submit" name="subbut" value="Cancel" />
</fieldset></form>';
}
Auswertung:
if(isset($_POST["action"])&&$_POST["action"]=="edit"&&$config["edit"]==1) {
print ' <form action="'.$_SERVER['PHP_SELF'].'" method="post"><fieldset>
<textarea cols="60" rows="15" name="newcontent">'.htmlspecialchars(file_get_contents($_POST["filename"]), ENT_QUOTES).'</textarea><br />
<input type="hidden" name="action" value="editsure" /><input type="hidden" name="filename" value="'.$_POST["filename"].'" />
<input type="submit" name="subbut" value="Save" style="float:left;" /><input type="submit" name="subbut" value="Cancel" />
</fieldset></form>';
}