mkdir recursiva () y chmod ()?
-
20-09-2019 - |
Pregunta
Cuando se utiliza mkdir()
con la bandera recursiva se define como true no todos los directorios creados obtener el chmod especificado o simplemente el último? Por ejemplo:
mkdir('/doesnotExist1/doesnotExist2/doesnotExist3/', 0755, true);
¿La nueva creación directorios /doesnotExist1/
y /doesnotExist1/doesnotExist2/
también tienen la misma chmod como /doesnotExist1/doesnotExist2/doesnotExist3/
= 0755?
Si no es así, ¿hay alguna manera de forzar el comportamiento anterior
Me gustaría probar esto por mí mismo, pero no tienen acceso a un cajero automático de la caja * nix.
Solución
Just probado en Linux gentoo con PHP 5.2.12: Todos ellos tienen los mismos permisos
.soulmerge@shark-g:~$ php -a
Interactive shell
php > mkdir('asd/def/ghi', 0700, 1);
php > ^C
soulmerge@shark-g:~$ ls -hal asd
total 12K
drwx------ 3 soulmerge soulmerge 4.0K 2010-01-12 10:32 .
drwxr-xr-x 79 soulmerge soulmerge 4.0K 2010-01-12 10:32 ..
drwx------ 3 soulmerge soulmerge 4.0K 2010-01-12 10:32 def
Otros consejos
La función C responsable de mkdir ( 'localfilesystem', x, true) es php_plain_files_mkdir () en principal / arroyos / plain_wrapper.c. Y llama php_mkdir(dir, mode TSRMLS_CC);
para el directorio "primero" que se supone que crear y VCWD_MKDIR(buf, (mode_t)mode))
para todos los subdirectorios. php_mkdir () hace algunas comprobaciones modo seguro y luego llama también VCWD_MKDIR
Así que sí, el parámetro modo se utiliza para todos los directorios creados por mkdir (p, x, es cierto).