我正在使用 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。这适用于所有创建的目录。