为什么在PHP中使用Mkdir递归标志,则嵌套目录不是chmod


Why in PHP if you use Mkdir recursive flag do the nest directories not chmod?

我正在使用 mkdir 为文件结构创建通常 2 个嵌套目录。 它创建的目录始终设置为 0755。 但是,我正在使用的代码是。

 mkdir('path_one/path_two', 0777, true);

我试过然后做

 chmod('path_one/path_two', 0777);

但这仅将最终目录设置为 0777。 什么会导致 mkdir 无法正常工作?

mkdir 运行正常。创建的中间目录是根据当前 umask 设置的。你想要这样的东西:

umask(0777);
mkdir('path_one/path_two', 0777, true);

来自 php 手册:

该模式也由当前的 umask 修改,您可以更改它 使用 umask()。

请注意,在 umask()设置的任何位在 mkdir() 使用的结果中都是未设置的。默认掩码为 0022,mkdir 的默认创建模式为 0777,结果值为 0755。这适用于所有创建的目录。