[PHP] Ordner per Script erstellen und nutzen

noob

BabyNooB
ID: 95880
L
4 Mai 2006
160
10
Also ich hab folgendes Problem:
Ich lasse per php-Script einen Ordner erstellen.
$temp = umask(0);
mkdir("./tada/jop/",0777);
umask($temp);

Soweit so gut. Der Ordner steht und hat die entsprechenden chmod-Rechte.
Nun möchte ich die darin enthaltenen Dateien auslesen(ok sind noch keine da, aber dann liefert die Ausgabe halt nichts):
$handle = opendir("./tada/jop/");
Warning: opendir(): SAFE MODE Restriction in effect. The script whose uid is 649 is not allowed to access ./tada/jop/ owned by uid 30 in...
Das Problem ist nur, dass ich safe mode eigenhändig in der php.ini ausgeschaltet hab, da mkdir() vorher auch nicht funktionierte.
Ein weiteres Rätsel ist mir auch, warum das Script einwandfrei funktioniert, wenn ich den gleichen Ordner mit den gleichen Rechten per FTP erstelle.

Per ssh hab ich rausgefunden, dass Script und FTP jeweils unterschiedliche Benutzer/Gruppen sind, wodurch das wohl sein könnte. Aber ich hab nicht wirklich ne Ahnung, wie ich das beheben könnte.
Hab ja noch ne kleine Hoffnung, dass es ganz einfach zu lösen ist.

Bisher gescheiterte Versuche:
-Per ftp_connect erstellen->kein php5 für ftp_chmod vorhanden
-Per ftp_connect erstellen und normal chmod() ändern->keine Berechtigung
-Per chown() Benutzer und Gruppe zu ändern->keine Berechtigung
-Per system("chown") exec("chown") etc. -> passiert nichts
 
kann sein das du bei dir den absoluten path angeben musst, um dein problem zu lösen. ansonsten solltest du nochmal prüfen ob bei dir eine open-basedir restricten aktiv ist (was aber durch den ersten satz gelöst werden dürfte).

die zwei verschiedenen benutzer kannst du nicht so einfach korrigieren, dafür musst du serveradmin sein.
 
Du willst also unter /tada das verzeichniss jop erzeugen. Dazu muss das Skript die Rechte haben, also /tada muss drwxrwxrwx (Oktal: 0777) haben.
Dann muss das Unterverzeichniss jop wenn es vom Skript erstellt wurde mindestens drwx------ (Oktal: 0700) haben, aber hier ist auch drwxrwxrwx (Oktal: 0777) besser damit man auch vom FTP aus drauf zugreifen kann.

mkdir("./tada/jop",0777); <- ohne / siehts schöner aus
 
DocTrax schrieb:
Du willst also unter /tada das verzeichniss jop erzeugen. Dazu muss das Skript die Rechte haben, also /tada muss drwxrwxrwx (Oktal: 0777) haben.
Dann muss das Unterverzeichniss jop wenn es vom Skript erstellt wurde mindestens drwx------ (Oktal: 0700) haben, aber hier ist auch drwxrwxrwx (Oktal: 0777) besser damit man auch vom FTP aus drauf zugreifen kann.

mkdir("./tada/jop",0777); <- ohne / siehts schöner aus

im safe mode ist das scheiß egal... im safe mode hast du nur zugriff auf datein des selben nutzers. sprich wenn die php datei per ftp hochgeladen wurde ist diese user FTP_XYZ... erstellt dieses script jetzt eine neue datei gehöhrt diese dem webserver also APACHE. (weil APACHE dieses script ausführt) und schon kann man nicht mehr auf die datei zugreifen... da php jetzt überprüft ob das script den selben eingentümer hat wie die neue datei. Aber FTP_XYZ ist ebendmal ungelich APACHE... von daher fehler.