Sie könnten tun die folgenden
function makedirs($dirpath, $mode = 0775, $recursive = true) {
$oldMask=umask(002);
$status = is_dir($dirpath) || mkdir($dirpath, $mode, $recursive);
umask($oldMask);
return $status;
}
$dir = 'path/to/folder/'
makedirs($dir, 0775);
Hinweis: Obwohl Sie umask (0) verwenden können, um sogar 777 Berechtigungen zuzulassen, wird dies nicht empfohlen, da dies Sicherheitsprobleme verursachen könnte.
bearbeiten
Versuchen Sie, den Wert von umask systemweit für alle Benutzer einrichten oder für sich selbst das umask Code von PHP zu entfernen. Obwohl der obige Code funktioniert, wird die Umask in PHP-Skripten nicht empfohlen.
Laut Handbuch Seite PHP
Vermeiden Sie diese Funktion in Multithreaded Webservern verwendet wird. Es ist besser, ändern Sie die Dateiberechtigungen mit Chmod() nach dem Erstellen der Datei. Die Verwendung von umask() kann zu einem unerwarteten Verhalten von gleichzeitig ausgeführten Skripten und dem Webserver führen, da alle die gleiche Umask verwenden.
Sie können Setup umask in/etc/bashrc oder/etc/profile-Datei für alle Benutzer. Standardmäßig ist die meisten Linux Distributionen auf 0022 (022) oder 0002 (002) eingestellt. Öffnen Sie/etc/profile oder ~/.bashrc ein:
# vi /etc/profile
ODER
$ vi ~/.bashrc
Anfügen/eine neue umask folgende Zeile Setup ändern: umask 022
Speichern und schließen Sie die Datei. Änderungen werden nach dem nächsten Login wirksam. Alle UNIX-Benutzer können die System-Umask-Standardeinstellungen in ihrer/etc/profile-Datei, ~/.profile (Korn/Bourne-Shell) ~/.cshrc-Datei (C-Shells), ~/.bash_profile (Bash-Shell) oder ~/.login überschreiben Datei (definiert die Umgebung des Benutzers bei der Anmeldung).
Quelle http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
Überprüfen Sie den umask-Wert. können Sie Umask in die Shell eingeben, um den Maskenwert herauszufinden.Ich schätze, Ihr Umask-Wert ist 022 – user3425867
'$ dir = 'Pfad/zu/Ordner /' Makedirs ($ dir, 0775)' das ist unvollständig, wenn das ist, was Sie wirklich verwenden. Wenn das Pseudocode ist, posten Sie bitte die richtige Syntax. –
'$ mode = 0775' die führende Null wird wahrscheinlich wegen der benutzerdefinierten Funktion als oktal btw behandelt. Versuchen Sie es zu zitieren und das gleiche für drinnen 'makedirs ($ dir, 0775)'. –