Datei Upload Problem mit SafeMode

deusfalsus

Erfahrenes Mitglied
Hallo,

bitte lest zu Ende, bevor ihr schreit, das Thema wäre tausend mal duchgekaut worden.

Ich habe unter archiv.honeytoast.net eine Bildergallerie angelegt. Dazu gibt es drei Kategorieordner und darin Unterordner für die jeweiligen Serien auf dem Server. Wo welches Bild liegt und wozu es gehört steht in einer Datenbank.
Nun soll jemand ohne html/php/etc-Kentnisse diese Gallerie erweitern, was mich veranlasste, eine Eingabemaske zu erstellen.

Die bereits bestehenden Serien zu erweitern (oder Bilder dort rauszulöschen/zu verändern) klappt einwandfrei.
Auch kann ich eine neue Serie anlegen. Der Datenbankeintrag ist ohnehin unproblematisch und auch der Ordner wird richtig angelegt (mkdir(),chmod() - ).
Will ich dann aber eine Datei hochladen, bekomme ich die Meldung:

move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 34020 is not allowed to access /home/www/htdocs/honeytoast.net/***/***/testordner owned by uid 30 in /home/www/htdocs/honeytoast.net/***/***.php on line 17

Dazu sei noch gesagt, dass ich beim upload in bestehende serien die selben skripte benutze wie in die neue Serie.
Die Ordnerrechte sind gesetzt (habs überprüft).
In anbetracht der Tatsache, dass es mit bestehenden Serien klappt, kann es auch nicht sein, das es allgemein bei meinem Provider nicht geht.

Für jegliche Hilfe wäre ich sehr dankbar.
 
Aus der Fhelermeldung lässt sich ja rauslesen, dass die Ordner verschiedenen Usern zugeordnet sind und die Rechte nicht so gesetzt sind, dass ein anderer User dort etwas verändern kann.
Das Script läuft unter dem User mit der ID 34020 und der Zielordner gehört dem User mit der ID 30.
Jetzt bleibt einem die Möglichkeit die Besitzer der Ordner zu ändern oder die Rechte der Ordner zu ändern.
 
wenn ich per chown() den Eigentümer ändern will, bekomme ich die Meldung:
Warning: chown() [function.chown]: Operation not permitted in ...
Lege ich den Ordner über ftp-befehle an, kann ich wiederum nicht chmod()en
Was tun?
 
Zuletzt bearbeitet:
Benutz am besten copy statt move_uploaded_file, das hat nicht die Probleme mit dem Safemode. Und um die Rechte zu setzen: chmod($datei_oder_verz, 0777);

Schon hast du Vollzugriff auf der Verz.
 
dasselbe Problem

Ich habe dasselbe Problem wie deusfalus.

Die hier erwähnten Vorschläge (copy() statt move_uploaded_file(), chmod) funktionieren nicht.

Bei copy() bekomme ich die exakt gleiche Fehlermeldung.
chmod ist nicht nötig weil das Verzeichnis in welches ich verschieben will, bereits auf 777 chmoddet ist.

Hast du das Problem lösen können @deusfalus?

Danke schonmal.
 
Ich hab mich auch gerad mit dem Mist rumgeschlagen und hab es gelöst !

Also zuerstmal wird die hochgeladene Datei mit move_uploaded_file() in ein "temporäres" Verzeichnis kopiert. Dann das neue Verzeichnis erstellt und beiden mittels chmod() die jeweiligen Rechte gegeben. Und jetzt einfach mit rename() die Datei in das neu erstellte Verzeichnis verschieben, funktioniert wie copy().

Damit funktionierts bei mir, trotz SafeMode.

Gruß
Thomas
 
Warning: rename(): SAFE MODE Restriction in effect. The script whose uid is 10160 is not allowed to access [XYZ] owned by uid 2526 in [XZY] on line 63

@reddi: ist vielleicht der SAFE MODE bei dir trotzdem nicht eingeschaltet?

Hat sonst jemand eine Ahnung wie man dieses Problem lösen kann?

antihero
 
Hab ein Tutorial über das Problem geschrieben, ich hoffe es wird bald veröffentlicht. Wenn du willst, kann ichs dir auch per PM schicken.
 
Ich habs jetzt folgendermaßen gelöst:

Ich lege mein Verzeichnis per ftp-Befehl an und chmodde es auch mittels eines solchen. Das Problem mit dem abweichenden Eigentümer besteht dadurch nicht mehr.
PHP:
ftp_mkdir($conn,"$ordner");
ftp_site($conn, "chmod 0777 $ordner")

Zuvor hatte ich mit einem normalen chmod gearbeitet und dadurch die UID des Ordners ungewollt verändert.
So aber klappt jetzt auch problemlos der upload.
 
Zurück