当前位置:  编程技术>php

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

    来源: 互联网  发布时间:2014-08-26

    本文导语:  使用mkdir创建文件夹时,发现这个函数有两个参数,第二个参数是为新创建的文件夹指定权限。 但是如果直接用mkdir('文件地址', 0777);时 发现新文件夹的权限并不是777,一般情况下会是022。 因为mkdir在给文件夹制定权限时,会...

使用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”开头,而且一定不要加引号。


    
 
 

您可能感兴趣的文章:

  • nginx禁止dedecms目录php执行权限
  • PHP mkdir()创建目录没有写权限怎么办?
  • php mkdir()函数创建文件夹与权限设置
  • php的mkdir()函数创建文件夹比较安全的权限设置方法
  • 二进制交叉权限微型php类分享
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • Starting PHP with FastCGI ??? 请熟悉PHP和LINUX的高手帮忙解决这个问题,谢谢!!!
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 安装好的Redhat Linux 8.0,带Apache和php支持,安装上Mysql后,运行正常,但检测提示php不支持Mysql,如何解决?
  • php网页标题中文乱码如何解决
  • 开源PHP电商解决方案 Sylius
  • PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
  • iis加载不到php.ini的解决方法
  • php出现Class 'XsltProcessor' not found问题的解决方法
  • PHP上传文件过大$_FILES为空的解决方法
  • php绘图中显示不出图片的原因及解决
  • PHP文件型缓存解决方案 Secache
  • php4.1.2版本更新问题,解决的给100分
  • php中$美元符号与Zen Coding冲突问题解决方法分享
  • php网页标题中文乱码的有效解决方法
  • Python和php通信乱码问题解决方法
  • PHP上传文件大小限制二种解决方法
  • php syntax error, unexpected $end 错误怎么解决
  • php的webservice的wsdl的XML无法显示问题的解决方法
  • 解决php json_encode中文转码、乱码问题
  • php pdo编码乱码问题的解决方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php5中当浏览器禁用cookie时保持会话session的方法
  • 判断php数组维度(php数组长度)的方法
  • PHP编程语言介绍及安装测试方法
  • 图解找出PHP配置文件php.ini的路径的方法
  • php类声明和php类使用方法示例分享
  • windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
  • 查找php配置文件php.ini所在路径的二种方法
  • php定义数组和使用示例(php数组的定义方法)
  • PHP质数计算三种方法 php求100以内的质数
  • php反射机制获取php类的所有方法
  • php跨域cookie共享使用方法
  • 两种设置php载入页面时编码的方法
  • PHP快速排序小例子 php快速排序实现方法
  • PHP exif扩展方法开启详解
  • windows下开启PHP GD库的方法
  • php判断闰年的三种方法(闰年计算方法)
  • php向js函数传参的几种方法
  • php检测iis环境是否支持htaccess的方法
  • php 自动生成订单编号二种方法
  • php去除换行(回车换行)的三种方法
  • php去掉URL网址中带有PHPSESSID的配置方法
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP去除html标签,php标记及css样式代码参考
  • php输入流php://input使用示例(php发送图片流到服务器)
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP转换器 HipHop for PHP
  • php通过socket_bind()设置IP地址代码示例
  • PHP 框架 Pop php
  • php安装完成后如何添加mysql扩展
  • PHP的JavaScript框架 PHP.JS


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3