7

再帰フラグをtrueに設定して使用mkdir()する場合、作成されたすべてのディレクトリは指定されたchmodを取得しますか、それとも最後のディレクトリのみを取得しますか?例えば:

mkdir('/doesnotExist1/doesnotExist2/doesnotExist3/', 0755, true);

新しく作成されたディレクトリは、 = 0755/doesnotExist1//doesnotExist1/doesnotExist2/同じchmodを取得しますか?/doesnotExist1/doesnotExist2/doesnotExist3/

そうでない場合、上記の動作を強制する方法はありますか?

私はこれを自分でテストしますが、*nixボックスATMにアクセスできません。

4

2 に答える 2

7

PHP5.2.12を使用してgentoolinuxでテストしたばかりです。これらはすべて同じ権限を持っています。

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
于 2010-01-12T09:33:04.893 に答える
4

mkdir('localfilesystem'、x、true)を担当するC関数は、main / streams / plain_wrapper.cのphp_plain_files_mkdir()です。そして、それがphp_mkdir(dir, mode TSRMLS_CC);作成することになっている「最初の」ディレクトリとVCWD_MKDIR(buf, (mode_t)mode))すべてのサブディレクトリを要求します。php_mkdir()はセーフモードチェックを実行してから呼び出しVCWD_MKDIR ます。そうです、モードパラメータはmkdir(p、x、true)によって作成されたすべてのディレクトリに使用されます。

于 2010-01-12T09:40:55.453 に答える