php中mkdir()函数的权限问题
2017-03-21 阅读数:167

        今天在编写一个日志记录操作类时,发现使用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 的。 


前方10米有沙发可抢!
大人,请先右上角登个录 ↑
Copyright@2017-2020 www.dongguagua.com All Right Reserived 京ICP备17025269号