当前位置:   article > 正文

php中mkdir()函数的权限问题

php mkdir() root
遇到个问题 
某个定时job用root用户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 的。

转载于:https://my.oschina.net/penngo/blog/134563

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/89396
推荐阅读
相关标签
  

闽ICP备14008679号