PHP chmod 函数与批量修改文件目录权限


Posted in PHP onMay 10, 2010

语法
chmod(file,mode)参数 描述
file 必需。规定要检查的文件。
mode 可选。规定新的权限。
mode 参数由 4 个数字组成:
第一个数字永远是 0
第二个数字规定所有者的权限
第二个数字规定所有者所属的用户组的权限
第四个数字规定其他所有人的权限
可能的值(如需设置多个权限,请对下面的数字进行总计):
1 - 执行权限
2 - 写权限
4 - 读权限
来看个简单的实例

<?php 
chmod("/somedir/somefile", 755); // 十进制数,可能不对 
chmod("/somedir/somefile", "u+rwx,go+rx"); // 字符串,不对 
chmod("/somedir/somefile", 0755); // 八进制数,正确的 mode 值 
?>

改进递归文件模式@ infosoft ....,这是一个小短,应处理的Linux文件系统的所有文件类型。这个可以批量更改文件或目录的权限
<?php 
function chmodr($path, $filemode) { 
if (!is_dir($path)) 
return chmod($path, $filemode); 
$dh = opendir($path); 
while (($file = readdir($dh)) !== false) { 
if($file != '.' && $file != '..') { 
$fullpath = $path.'/'.$file; 
if(is_link($fullpath)) 
return FALSE; 
elseif(!is_dir($fullpath) && !chmod($fullpath, $filemode)) 
return FALSE; 
elseif(!chmodr($fullpath, $filemode)) 
return FALSE; 
} 
} 
closedir($dh); 
if(chmod($path, $filemode)) 
return TRUE; 
else 
return FALSE; 
} 
?>

如果你目录太多的话可以用
<?php 
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname), RecursiveIteratorIterator::SELF_FIRST); 
foreach($iterator as $item) { 
chmod($item, $filemode); 
} 
?>

这段代码来修改目录的权限
哈哈,我们不只是讲chmod简单语法,而且还做了复杂的关于chmod使用实例

说明
bool chmod ( string $filename , int $mode )
尝试将 filename 所指定文件的模式改成 mode 所给定的。

注意 mode 不会被自动当成八进制数值,而且也不能用字符串(例如 "g+w")。要确保正确操作,需要给 mode 前面加上 0:

mode 参数包含三个八进制数按顺序分别指定了所有者、所有者所在的组以及所有人的访问限制。每一部分都可以通过加入所需的权限来计算出所要的权限。数字 1 表示使文件可执行,数字 2 表示使文件可写,数字 4 表示使文件可读。加入这些数字来制定所需要的权限。有关 UNIX 系统的文件权限可以阅读手册“man 1 chmod”和“man 2 chmod”。

<?php 
// Read and write for owner, nothing for everybody else 
chmod("/somedir/somefile", 0600); 
// Read and write for owner, read for everybody else 
chmod("/somedir/somefile", 0644); 
// Everything for owner, read and execute for others 
chmod("/somedir/somefile", 0755); 
// Everything for owner, read and execute for owner's group 
chmod("/somedir/somefile", 0750); 
?>

如果成功则返回 TRUE,失败则返回 FALSE。

Note: 当前用户指的是执行 PHP 的用户。很可能和通常的 shell 或者 FTP 用户不是同一个。在大多数系统下文件模式只能被文件所有者的用户改变。

Note: 本函数不能作用于远程文件,被检查的文件必须通过服务器的文件系统访问。

Note: 当安全模式打开的时候,PHP 会检查所操作的文件是否和正在执行的脚本具有相同的 UID (所有者)。要注意的是,不能修改 SUID,SGID 和 sticky bits。

PHP 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
Jun 01 PHP
PHP 身份验证方面的函数
Oct 11 PHP
解析php中var_dump,var_export,print_r三个函数的区别
Jun 21 PHP
php生成唯一的订单函数分享
Feb 02 PHP
php的闭包(Closure)匿名函数详解
Feb 22 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
PHP的Socket通信之UDP通信实例
Jul 02 PHP
如何使用php实现评委评分器
Jul 31 PHP
关于PHP内置的字符串处理函数详解
Feb 04 PHP
PHP使用观察者模式处理异常信息的方法详解
Sep 24 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
Oct 08 PHP
php file_exists 检查文件或目录是否存在的函数
May 10 #PHP
php disk_free_space 返回目录可用空间
May 10 #PHP
PHP is_dir() 判断给定文件名是否是一个目录
May 10 #PHP
php is_file 判断给定文件名是否为一个正常的文件
May 10 #PHP
php下用cookie统计用户访问网页次数的代码
May 09 #PHP
简单的PHP留言本实例代码
May 09 #PHP
php 上一篇,下一篇文章实现代码与原理说明
May 09 #PHP
You might like
php中文字母数字验证码实现代码
2008/04/25 PHP
php动态生成JavaScript代码
2009/03/09 PHP
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
jQuery 解析xml文件
2009/08/09 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
Python守护进程(daemon)代码实例
2015/03/06 Python
Python中使用ElementTree解析XML示例
2015/06/02 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
关于Keras Dense层整理
2020/05/21 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
护士辞职信模板
2014/01/20 职场文书
《学棋》教后反思
2014/04/14 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
总经理聘用协议书
2015/09/21 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript