php mkdir 指定权限不对。

18-04-03 10:13 字数 584 阅读 2584 已编辑

php的mkdir函数使用来新建目录的,官方介绍第二个参数是用来指定目录权限的。所以我们一般会这么写。

mkdir('upload/article/20181804', 0777, true);

新建了一个目录并且指定最大的权限。但是目录创建完成后发现权限和我们预想的并不一样。

drwxr-xr-x  2 www-data www-data 4096 Mar  1 10:57 20181804/

权限是751,并不是777。

官方文档中关于model参数有介绍

注意也许想用八进制数指定模式,也就是说该数应以零打头。模式也会被当前的 umask 修改,可以用 umask() 来改变。

所以mkdir在给文件夹制定权限时,会跟当前登录操作系统用户的umask(用户缺省权限属 性)值进行位“与”,得到的值才是最终权限值,所以,如果用户umask是022,即:000 010 010 在于mkdir指定的777 ,即:111 111 111 位“与”后,得到的真实权限为:022。

所以如果想给目录最大权限我们可以使用umask函数。

$oldumask=umask(0); 
mkdir('test',0777); 
umask($oldumask); 

或者使用chmod函数。

mkdir('upload/article/20181804', 0777, true);
chmod('upload/article/20181804', 0777);
0人点赞>
关注 收藏 改进 举报
0 条评论
排序方式 时间 投票
快来抢占一楼吧
请登录后发表评论
站长 @ 十七度
文章
384
粉丝
23
喜欢
195
收藏
31
排名 : 1
访问 : 144.99万
私信