今天在编写一个日志记录操作类时,发现使用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 的。
上一篇:
php实现des加密
下一篇:
鼠标滚轮事件
友情提示:垃圾评论一律封号...