php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
mkdir & UserID setzen....


 
execrable
15-08-2005, 13:33 
 
Moin,

ich erstelle in meinem Skript ein Verzeichnis per mkdir() und möchte als nächsten Schritt dort eine Datei reinkopieren. Nun bekomme ich ein UserID problem. Wie kann ich unter PHP den "chown" des Verzeichnisses ändern ?

Ciao
ExeCRabLE

 
hhcm
15-08-2005, 13:39 
 
Mit chown?

:goth:

 
execrable
15-08-2005, 13:54 
 
Moin,

ja ist irgendwie nahliegend :)

Ich bekomme nun ein Meldung "chown(): Operation not permitted..."

Woran kann das nun liegen ???

 
ExInfernis
15-08-2005, 13:57 
 
Das du bzw. der User unter dem dein Server läuft kein Recht hat die Rechte von Dateien / Verzeichnissen zu ändern.

 
execrable
15-08-2005, 14:10 
 
Hmmm...

jetzt wird es verzwickt...

Wie sollte ich das Problem insgesamt angehen ? Ich würde nur sehr ungerne den Safe-Mode deaktivieren.

 
onemorenerd
15-08-2005, 14:18 
 
Wenn du den Safe Mode halten möchtest, dann doch aus gewissen Gründen. Die selben sollten dich auch davon abhalten, überhaupt ein Verzeichnis chown-en zu wollen.

Vielleicht muß der Besitzer gar nicht geändert werden. Erkläre doch mal bitte, was das für ein Verzeichnis ist, welchen Zweck es hat usw.
Eine Datei reinkopieren kannst du nämlich auch mit der original-UID.

 
execrable
15-08-2005, 14:44 
 
Ich möchte Bilder per Upload in eine Verzeichnisherachie ablegen. Die Verzeichnisse werde je nach Bedürfniss erstellt.

Mein Upload root verzeichnis ist "/medien/bilder/"

Jetzt soll nach User-ID und Bilder-Nr. ein verzeichniss im Uploadverzeichnis erstellt werden.

"/medien/bilder/user/bildernr/"

Bei dem Anlegen der Verzeichnisse "User" und "Bildernr" habe ich ein Berechtigungsproblem bzw. Das Anlegen geht aber der Upload der Bilder dann nicht mehr.

Muss ich zuvor den User wechseln um einen Upload zufahren, oder ähnliches ?

 
onemorenerd
15-08-2005, 14:55 
 
Upload über ein HTML-Formular? Dann wird das doch garantiert von einem PHP-Script verarbeitet. Das läuft auch im Safe Mode, auch mit der UID, kann also auch in die (mit selbiger UID) angelegten Ordner schreiben.

Welche UID würdest du denn sonst auch verwenden wollen? Oder hat jeder User bei dir auch einen Systemaccount? Das wäre die Torpedierung des Safe Mode.

Falls das Speichern der Bilder nicht klappt, liegt der Fehler vermutlich woanders. Wenn du uns den Code zeigst, finden wir ihn vielleicht.

 
execrable
15-08-2005, 15:06 
 
Das Skript legt in einem Rutsch das Verzeichnis an und kopiert dann den upload dort rein.

Beim Upload ist aber anscheinend ein anderer User am werk als bei der Verzeichniserstellung.

Ich kann das Skript hier nicht reinkopieren aber hier der "Knackpunkt" :


if(!file_exists($savename)){
if(!file_exists($ziel.$s_id)){
mkdir($ziel.$s_id);
}
if(!file_exists($ziel.$s_id.'/'.$fileid)){
mkdir($ziel.$s_id.'/'.$fileid);
}
}
$r=copy($f_tmpname1,$savename);

 
onemorenerd
15-08-2005, 15:10 
 
Dachte ich mir. Schau mal move_uploaded_file() (http://php.net/move_uploaded_file) an.

 
execrable
15-08-2005, 15:23 
 
?

Beim zweiten mkdir() Aufruf, bekomme ich die Meldung :

"mkdir(): SAFE MODE Restriction in effect. The script whose uid is 2050 is not allowed to access /........./medien/bilder/userid/10249 owned by uid 33 ..."

Ich habe den copy-befehl mit move_uploaded_file() ersetzt.

"move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 2050 is not allowed to access /........./medien/bilder/userid/10249 owned by uid 33 ..."

 
Spliffster
15-08-2005, 21:38 
 
Typisches Safe-Mode Problem, entweder du deaktivierst den Safe-Mode, lässt php als CGI-Modul laufen(falls du Root-Rechte hast) oder du kopierst die Dateien, welche die Verzeichniss bzw. Dateioperationen durchführen, per php, so dass der Server zum Eigentümer der Dateien wird.

Aber lies dir das (http://ilia.ws/archives/18_PHPs_safe_mode_or_how_not_to_implement_security.html) mal durch.


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:15 Uhr.