При использовании mkdir()
с рекурсивным набором флага к истинному все созданные каталоги получают указанный chmod или просто последний? Например:
mkdir('/doesnotExist1/doesnotExist2/doesnotExist3/', 0755, true);
Будут недавно созданные каталоги /doesnotExist1/
и /doesnotExist1/doesnotExist2/
также получите тот же chmod как /doesnotExist1/doesnotExist2/doesnotExist3/
= 0755?
В противном случае там какой-либо путь состоит в том, чтобы вызвать вышеупомянутое поведение?
Я протестировал бы это сам, но у меня нет доступа к *, отклоняют поле ATM.
Просто проверено на Gentoo Linux с PHP 5.2.12: все они имеют одинаковые разрешения.
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
Функция C, отвечающая за MKDIR ('localfileSystem', x true) - php_plain_files_mkdir () в Main / Streams / plan_wrapper.c. И это называет
php_mkdir (dir, mode tsrmls_cc);
для каталога «Первый», который он должен создавать и VCWD_MKDIR (BUF, (MODE_T) MODE))
для всех подкаталогов. php_mkdir () делает некоторый безопасный режим проверки, а затем звонки vcwd_mkdir
Поэтому да, параметр режима используется для всех каталогов, созданных MKDIR (P, X, TRUE).