PHP mkdir()无写权限的问题解决方法


Posted in PHP onJune 19, 2014

使用mkdir创建文件夹时,发现这个函数有两个参数,第二个参数是为新创建的文件夹指定权限。

但是如果直接用mkdir('文件地址', 0777);时 发现新文件夹的权限并不是777,一般情况下会是022。

因为mkdir在给文件夹制定权限时,会跟当前登录操作系统用户的umask(用户缺省权限属 性)值进行位“与”,得到的值才是最终权限值。

umask 是什么?

我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢?

当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是 umask 干的事情。

umask 设置了用户创建文件的默认权限,它与 chmod 的效果刚好相反,umask 设置的是权限“补码”,而 chmod 设置的是文件权限码。一般在 /etc/profile、$HOME/.bash_profile 或 $HOME/.profile 中设置 umask 值。

如何计算 umask 值?

umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的 umask 值中的数字。对于文件来说,这一数字的最大值分别是 6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用 chmod 命令增加这一权限。目录则允许设置执行权限,这样针对目录来说,umask 中各个数字最大可以到 7。

该命令的一般形式为:umask nnn,其中 nnn 可为 000 - 777。

我们只要记住 umask 是从权限中“拿走”相应的位即可。

如:umask 值为 022,则默认目录权限为 755,默认文件权限为 644。
所以,如果用户umask是022(一般默认是这个),即:000 010 010 在于mkdir指定的777 ,即:111 111 111 位“与”后,得到的真实权限为:022。

如果想让新建文件夹权限最大,有两种方法可以实现:(当然,是在当前用户能赋予最高权限的条件下)

1、修改用户umask,php提供有umask函数:

$oldumask=umask(0); 

mkdir('test',0777); 

umask($oldumask);

这种方法看起来一劳永逸,在脚本开头文件里指定下umask值,后面直接用mkdir就可以控制权限,需要注意的是:在多线程服务器上使用umask函数时,多个线程会公用一个umask,所以可能会造成混乱。

2、使用chmod函数,这也是最常用的方法:

mkdir('文件地址', 0777); 

chmod('文件地址', 0777);

最后,需要注意一点,权限值最好使用八进制表示,即“0”开头,而且一定不要加引号。

PHP 相关文章推荐
php下载文件的代码示例
Jun 29 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
php防止用户重复提交表单
Nov 02 PHP
yii通过小物件生成view的方法
Oct 08 PHP
php cli模式下获取参数的方法
May 05 PHP
php图像验证码生成代码
Jun 08 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
PHP获取文件的MD5值并判断是否被修改的例子
Jun 19 #PHP
PHP中strlen()和mb_strlen()的区别浅析
Jun 19 #PHP
php对包含html标签的字符串进行截取的函数分享
Jun 19 #PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
Jun 19 #PHP
PHP base64编码后解码乱码的解决办法
Jun 19 #PHP
PHP安全的URL字符串base64编码和解码
Jun 19 #PHP
PHP中的多行字符串传递给JavaScript的两种方法
Jun 19 #PHP
You might like
Search Engine Friendly的URL设计
2006/10/09 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
微信小程序时间轴实现方法示例
2019/01/14 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
javascript如何实现create方法
2019/11/04 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
python 删除列表里所有空格项的方法总结
2018/04/18 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
pycharm永久激活超详细教程
2020/10/29 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
美国NBA官方商店:NBA Store
2019/04/12 全球购物
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
师范生自我鉴定范文
2013/10/05 职场文书
通用求职信范文模板分享
2013/12/27 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
电影雨中的树观后感
2015/06/15 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记