Analyse von Berechtigungsproblemen der mkdir()-Funktion in PHP

高洛峰
Freigeben: 2023-03-03 20:16:01
Original
1059 Leute haben es durchsucht

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/
Nach dem Login kopieren

Ä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/
Nach dem Login kopieren

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/
Nach dem Login kopieren

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/
Nach dem Login kopieren

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);
Nach dem Login kopieren

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


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage