PHP bietet eine Funktion namens " mkdir ", dass Sie ein neues Verzeichnis erstellen können . Ein optionales Argument gibt den numerischen Wert der Berechtigungen auf das neue Verzeichnis zugeordnet werden. Zum Beispiel bieten Berechtigungen von " 0777 " zu lesen, schreiben und ausführen Berechtigungen für den " Eigentümer ", " Gruppe " und "Andere ". Es gibt mehrere Fälle, in denen Berechtigungszuweisung mit dem " mkdir "-Funktion es erscheint , als ob es nicht funktioniert , weil das neue Verzeichnis nicht über die gleichen Berechtigungen, die Sie an die Funktion übergeben . Nicht Anwendbar auf Windows
Die Liste der Berechtigungen, die Sie liefern dem " mkdir "-Funktion sind nur auf Linux-basierten Dateisystemen gültig. Das heißt, Sie können in keinem Fall Berechtigungen mit einem Verzeichnis, das Sie erstellen unter Windows. Wenn Sie die Berechtigungen mit dem " mkdir "-Funktion unter Windows passieren , PHP einfach ignoriert.
Default User Konto
Beachten Sie, dass ein Skript auf einem Webserver ab ein Browser läuft unter dem Standard- Benutzerkonto auf dem Web -Server wie " www-data " nicht unter Ihrem Benutzerkonto . Wenn Verzeichnis-Berechtigungen nicht funktionieren, kann es sein, dass Sie mit dem Testen ein Skript unter Ihrem Konto anstelle des Standard- Benutzerkonto. Sie können das Skript als Standard- Benutzer testen , indem Sie " su www -data" und die Erkundung der Verzeichnis-Berechtigungen zugewiesen diesen Benutzer.
Verzeichnis Mask
Wenn die resultierenden Berechtigungen von einem neuen Verzeichnis anders aus, was Ihnen passiert sind, kann es aufgrund eines Verzeichnisses Maske angewendet, um den Berechtigungen sein . Die Maske wird durch die Web -Server verwaltet , nicht von PHP. Um die Maske zu umgehen , verwenden Sie die " umask "-Funktion , um die Maske auf Null gesetzt , das Verzeichnis mit " mkdir " und ändern Sie die Verzeichnisberechtigungen mit dem " chmod "-Funktion
Zum Beispiel: .
< php $ save = umask (0); ? if ( mkdir ($ newdir ) ) chmod ( $ newdir , 0755 ); umask ($ save) ; ? >
Rekursive Zuordnung
" mkdir " -Funktion nimmt ein zweites optionales Argument, das verschachtelte Verzeichnisse rekursiv erzeugt . Wenn Sie Berechtigungen zuweisen Verzeichnis rekursiv , können die Berechtigungen nicht in der richtigen Reihenfolge ausgeführt werden und Sie könnten andere Ergebnisse zu bekommen , was Sie erwartet . Um die richtige Ordnung zu gewährleisten , verwenden Sie den " chmod "-Funktion , um Verzeichnis-Berechtigungen auf das neue Verzeichnis zuweisen , nachdem Sie es schaffen mit dem " mkdir "-Funktion
Zum Beispiel: .
< ? phpif ( mkdir ($ newdir , 0755 , true) ) chmod ( $ newdir , 0755 ); ? >