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.

¿Fue útil?

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).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top