Moin,
ich habe einen Tool geschrieben zum Verwalten von Dateien auf meinem Server. Nun habe ich ein eigenartiges Problem:
Ich habe eine Funktion eingebaut, womit ich Dateien editieren kann. Das funktioniert auch ganz gut, nur manchmal ernte ich einen HTTP 403-Fehler. Woran das liegt ist mir wirklich schleierhaft. Die einzigste Gemeinsamkeit, die die fehlererzeugenden Dateien haben ist, dass sie in einem Ordner liegen, der im Name einen Bindestrich hat. Allerdings wüsste ich nicht, warum das ein Problem sein sollte, zumal es in Ordnern mit Leerzeichen anstandslos funktioniert.
Der gesamte Code steht hier:
http://pastebin.com/LJfTTkTj
Die vielleicht relevanten Funktionen:
if(isset($_POST["action"])&&$_POST["action"]=="editsure"&&$config["edit"]==1) {
if($filehandle = @fopen($_POST["filename"], 'w')) {
fwrite($filehandle, $_POST["newcontent"]);
fclose($filehandle);
print '<span class="message">The file was edited successfully.</span>';
} else print '<span class="message">There was an error while editing this file.</span>';
}
if(isset($_POST["action"])&&$_POST["action"]=="edit"&&$config["edit"]==1) {
print '<form action="'.$_SERVER['PHP_SELF'].'" method="get" style="float:right;"><fieldset><input type="submit" value="Cancel" /></fieldset></form>
<form action="'.$_SERVER['PHP_SELF'].'" method="post" align="left"><fieldset>
<input type="submit" value="Save" style="float:right;" />
<textarea cols="100" rows="15" name="newcontent">'.htmlspecialchars(file_get_contents($_POST["filename"])).'</textarea>
<input type="hidden" name="action" value="editsure" />
<input type="hidden" name="filename" value="'.$_POST["filename"].'" /></fieldset></form><br />';
}
Die Rechte der Ordner bis hin zur Datei sind durchgängig 755.
Die Rechte der Datei sind 644.
Das ist auch bei allen anderen Dateien der Fall, die sich bearbeiten lassen.
Vielleicht hat ja jemand eine brilliante Idee ;)
Grüße Marco