Heim >Backend-Entwicklung >PHP-Tutorial >Analyse von Berechtigungsproblemen der mkdir()-Funktion in PHP

Analyse von Berechtigungsproblemen der mkdir()-Funktion in PHP

高洛峰
高洛峰Original
2016-12-21 15:14:061087Durchsuche

Problembeschreibung:
Verwenden Sie den folgenden PHP-Code, um ein Verzeichnis zu erstellen. Die erwartete Berechtigung des Verzeichnisses ist 0777 und das tatsächliche Ergebnis ist 0755

mkdir('./aa/',0777 );

Analyse- und Testergebnisse:

1. Die von der mkdir()-Funktion angegebenen Verzeichnisberechtigungen können nur kleiner oder gleich den von der System-umask festgelegten Standardberechtigungen sein.
Zum Beispiel ist die Standard-Umask von Linux im Allgemeinen 0022, das heißt, die Standardberechtigung zum Erstellen eines Verzeichnisses ist 0755, sodass php mkdir('./aa/',0777) zu diesem Zeitpunkt die Berechtigung des Verzeichnisses erhält 0755 sein.

xw@xw-X201:~/Desktop/dd/aa$ umask
0022
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw1/',0755);"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/',0747);"
xw@xw-X201:~/Desktop/dd/aa$ ll
总用量 20
drwxrwxrwx 5 xw xw 4096 2012-06-01 11:58 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxr-xr-x 2 xw xw 4096 2012-06-01 11:57 xw/
drwxr-xr-x 2 xw xw 4096 2012-06-01 11:58 xw1/
drwxr--r-x 2 xw xw 4096 2012-06-01 11:58 xw2/

Ändern Sie die Standardberechtigungen des Systems auf 777, mkdir() kann größere Berechtigungen angeben

xw@xw-X201:~/Desktop/dd/aa$ umask 000
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ ll
总用量 12
drwxrwxrwx 3 xw xw 4096 2012-06-01 12:08 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxrwxrwx 2 xw xw 4096 2012-06-01 12:08 xw2/

2. Die Funktion chmod() wird von der System-Umask nicht beeinflusst und kann Berechtigungen festlegen, die über die Standardberechtigungen des Systems hinausgehen.

xw@xw-X201:~/Desktop/dd/aa$ umask
0022
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw1/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/');"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw3/');chmod('./xw3/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ ll
总用量 20
drwxrwxrwx 5 xw xw 4096 2012-06-01 12:12 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxr-xr-x 2 xw xw 4096 2012-06-01 12:11 xw1/
drwxr-xr-x 2 xw xw 4096 2012-06-01 12:11 xw2/
drwxrwxrwx 2 xw xw 4096 2012-06-01 12:12 xw3/

3. Der mkdir-Befehl des Systems kann Berechtigungen festlegen, die über dem Standardwert liegen.

xw@xw-X201:~/Desktop/dd/aa$ umask
0022
xw@xw-X201:~/Desktop/dd/aa$ mkdir -m0777 xw
xw@xw-X201:~/Desktop/dd/aa$ ll
总用量 12
drwxrwxrwx 3 xw xw 4096 2012-06-01 12:18 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxrwxrwx 2 xw xw 4096 2012-06-01 12:18 xw/

Zusammenfassung:
php Wenn Sie ein Verzeichnis mit Lese- und Schreibberechtigungen erstellen möchten, verwenden Sie am besten den folgenden Code Verwenden Sie nicht die mkdir-Funktion, um Berechtigungen direkt anzugeben, um die Auswirkungen von System-umask zu vermeiden.

mkdir('./xw/');
chmod('./xw/',0777);

Weitere relevante Artikel, in denen die Berechtigungsprobleme der mkdir()-Funktion in PHP analysiert werden, finden Sie in PHP Chinesische Website!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn