Verzeichnisrechte mit mkdir() / umask()

julia29

Erfahrenes Mitglied
Hallo,

ich habe Probleme mit Verzeichnisrechten. Per PHP-Script muss ich variable Verzeichnisnamen anlegen können. Ich brauche die Rechte 777. Also lege ich mit folgendem Script meine Verzeichnisse an:

PHP:
if(@mkdir('../upload/'.$_POST['newOrdner'], 0777)){

Klappt alles bis auf die Rechte. Gebe ich im Script
777 wird daraus ein 410 (habe ich per FTP überprüft)
0777 wird daraus ein 755
0766 wird daraus ein 744
0755 wird daraus ein 755

was muss ich im Script eingeben um ein 777 zu erhalten?

ach ja - habe auch mit umask versucht, wird jedoch kein Verzeichnis angelegt
PHP:
if(@umask('../upload/'.$_POST['newOrdner'], 0777)){
Kann mir einer helfen?

Gruß
Julia
 
umask() erstellt auch keine Verzeichnisse sondern legt nur die Bitmaske fest die standardmaessig auf Dateien und Verzeichnisse angewandt wird.

Das Problem was hier meiner Meinung nach bestehen duerfte ist dass der Script-Owner (Dein FTP-User) nicht dem Verzeichnis-Owner (der Apache-User) entspricht, und somit die Aenderung der Rechte nicht erlaubt ist.
 
Das Problem was hier meiner Meinung nach bestehen duerfte ist dass der Script-Owner (Dein FTP-User) nicht dem Verzeichnis-Owner (der Apache-User) entspricht, und somit die Aenderung der Rechte nicht erlaubt ist.

Hallo Dennis,

das könnte passen
der Eigentümer per PHP wird mit "www-data (33)" und
der Eigentümer per FTP wird mit "(10102)"
angegeben. Obwohl - ist das wirklich das Problem? Eigentlich brauche ich doch nur Verzeichnisse mit 777, ändern wollte ich die eigentlich nicht, gleich so anlegen.
Aber wie?
Würde es denn was ändern, wenn ich den Owner per PHP auch auf "(10102)" setze, vorausgesetzt dies ist per PHP möglich?
 
Nur wenn [phpf]chown[/phpf] mit Superuser Rechten ausgeführt wird, darf es den Besitzer ändern - und ich bezweifle, dass diese Situation auf dem Server gegeben ist.

Wende dich am besten an den Support.
 
Aber sie möchte ja dynamische Verzeichnisse...

Hallo,
genau - ich benötige Verzeichnisse die ich per php dynamisch erstellen kann. Klappt ja auch alles, aber eben nur wenn ich ein Verzeichnis mit den Rechten 777 anlegen kann.
Problem ist, wenn ich per Script 0777 angebe, wird tatsächlich nur 755 gesetzt.
Ich brauche die Ziffer für meine php-Code-Zeile, die dann auch tatsächlich die Rechte auf 777 setzt. Mit 0777 klappt das nicht.
Gruß
Julia
 
Wie gesagt, der einzig moegliche Weg duerfte hier wohl FTP sein.
Aber da PHP auch FTP kann sollte dies kein grosses Problem darstellen. Es ist etwas aufwaendiger zu programmieren, aber wenn es noetig ist wird wohl kein Weg drumherum fuehren.

Wofuer willst Du denn ueberhaupt staendig Verzeichnisse erstellen?
 
Hallo,

habe es jetzt hinbekommen, mit

PHP:
$old_umask = umask(0);
umask($old_umask);

und dann noch mit
PHP:
}else{
  if(@mkdir($pfad1, 0777)) 
  {
   @chmod($pfad1, 0777);

Das neue Verzeichnis wird nun mit 777 gesetzt, vorher immer nur 755.
Dies funktioniert nun sogar mit unterschiedlichen Inhaberrechten
als php Owner (33) erstelle ich das Verzeichnis
und als ftp Owner (10102) kann ich die Daten abholen.

Meinen Dank an alle die hier ihr Wissen mit eingebracht haben.
Gruß
Julia
 
Zurück