今天在编写一个日志记录操作类时,发现使用mkdir('./test/',0777)新建了目录,指定了权限是0777,结果获得的是0755, 

而web上用www用户也在这目录创建目录和文件,结果报错了,找了一下原因,得到结论:

mkdir()函数指定的目录权限只能小于等于系统umask设定的默认权限。 

默认的umask如果目录权限为0755, 那么php  mkdir('./test/',0777) 得到目录的权限是0755. 


解决方法 

1,开始时指定umask 

$old=umask(0);  
mkdir('./test/',0777); 
umask($old);
2,使用chmod
mkdir('./test/',0777); 
chmod('./test/',0777);

手册里面提到: 

在多线程的服务器上尽量避免使用这个函数。创建文件后要改变其权限最好还是使用 chmod()。使用 umask()会导致并发程序和服务器发生不可预知的情况,因为它们是使用相同的 umask 的。 

相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!