Hallo!
Ich arbeite gerade an einem Script zum Bildupload und jetzt kommt mir dieses SAFE MODE in die Quere.
Genau genommen erstelle ich zuerst ein Verzeichniss:
if(!opendir("../pics")){
$verz = "../pics/";
$createverz = mkdir($verz, 0777);}
Dadurch ist beim Aufruf des Scriptes sichergestellt, dass das Verzeichniss für die Bilder existiert.
Jetzt kommt ein Formular mit Datum, Beschreibung, Bild (previewfile) und die anschließende Überprüfung nach Fehleingaben und ob die Datei das richtige Format, Maße etc. hat.
Die Angaben bekomme ich aus:
$size = getimagesize($_FILES[previewfile][tmp_name]);
Wenn die Überprüfung überstanden ist, erstelle ich noch ein Verzeichniss
mit dem Datum und versuche die Datei dorthin zu verschieben. Das sollte so funktionieren:
$datum = $_POST[datum];
$verz = "../pics/".$datum."/";
mkdir($verz, 0777);
chmod($verz, 0777); if(move_uploaded_file($_FILES[previewfile][tmp_name],$verz."firstpreview.jpg")) echo "Es funktioniert";}
Funktioniert aber nicht. Ich bekomme folgenden Fehler:
Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 650 is not allowed to access /var/www/****/html/pics/20070207 owned by uid 33 in /var/www/****/html/fotos.php on line 105
Jene Zeile 105 ist die mit move_uploaded_file().
Jetzt habe ich folgende Fragen.
Das Verzeichniss "pics" kann ich ganz am Ende ohne Probleme mit mkdir(Ordnername, 0777) erstellen. Bei dem Verzeichniss zum Bild muss ich den chmod noch extra mit chmod(Ordnername, 0777) setzen. Der chmod von mkdir() wird da einfach nicht angewendet bzw. auf 755 (glaub ich - oder 750?) gesetzt. Wieso ist das so?
Die nächste Frage wär dann schon zum SAFE MODE.
Wenn ich die Datei nur in das Verzeichniss "pics" schieben will geht das ohne Probleme, in das Unterverzeichniss allerdings nicht. Ich kann das Verzeichniss $verz = "../pics/".$datum; erstellen aber die Datei nicht hinein schieben obwohl es auf dem gleichen Weg erstellt wurde und die selben Rechte besitzt wie das Übergeordnete Verzeichniss wo es funktioniert. Kann mir das bitte jemand erklären?
Wie finde ich einen Ausweg aus dieser "Zwickmühle"?
Ich wäre euch dankbar wenn ihr mir einen Ansatz liefern könntet.
Grüße, Matze