Datei bearbeiten: 403 trotz ausreichender Rechte
misterunknown
- php
0 fastix®
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
Moin!
Ich habe eine Funktion eingebaut, womit ich Dateien editieren kann. Das funktioniert auch ganz gut, nur manchmal ernte ich einen HTTP 403-Fehler.
So lange in Deinem PHP-Quelltext nicht etwas steht, was wie
header('HTTP/1.1 403 Forbidden');
aussieht (und derlei kommt nicht vor), musst Du an anderer Stelle suchen. Zum Server hast Du nichts gesagt, also kann ich nur raten: "Prüfe die Zugriffsregeln des HTTP-Servers".
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix