php中判断文件空目录是否有读写权限的函数代码


Posted in PHP onAugust 07, 2012

is_writable用来处理,记住 PHP 也许只能以运行 webserver 的用户名(通常为 \'nobody\')来访问文件。不计入安全模式的限制。
Example #1 is_writable() 例子

<?php 
$filename = 'test.txt'; 
if (is_writable($filename)) { 
echo 'The file is writable'; 
} else { 
echo 'The file is not writable'; 
} 
?>

上面的函数有一个问题就是filename 必需。规定要检查的文件 ,必须是文件啊,目录不可判断,下面我们来判断空目录。
实例1
该功能非常常用,特别在一些需要生成静态文件的项目中,一个目录是否可以,关乎到是否对该目录有创建文件删除文件的权限
/* 
问题出现:如何检查一个目录是否可写,如何目录下还有目录和文件,那么都要检查 
思路: 
(1)首先先写出检查空目录是否可写的算法: 
在该目录中生成一个文件,如果不能生成,表明该目录没有写的权限 
(2)使用递归的办法来进行检查 
代码实现: 
*/ 
set_time_limit(1000); 
function check_dir_iswritable($dir_path){ 
$dir_path=str_replace('\','/',$dir_path); 
$is_writale=1; 
if(!is_dir($dir_path)){ 
$is_writale=0; 
return $is_writale; 
}else{ 
$file_hd=@fopen($dir_path.'/test.txt','w'); 
if(!$file_hd){ 
@fclose($file_hd); 
@unlink($dir_path.'/test.txt'); 
$is_writale=0; 
return $is_writale; 
} 
$dir_hd=opendir($dir_path); 
while(false!==($file=readdir($dir_hd))){ 
if ($file != "." && $file != "..") { 
if(is_file($dir_path.'/'.$file)){ 
//文件不可写,直接返回 
if(!is_writable($dir_path.'/'.$file)){ 
return 0; 
} 
}else{ 
$file_hd2=@fopen($dir_path.'/'.$file.'/test.txt','w'); 
if(!$file_hd2){ 
@fclose($file_hd2); 
@unlink($dir_path.'/'.$file.'/test.txt'); 
$is_writale=0; 
return $is_writale; 
} 
//递归 
$is_writale=check_dir_iswritable($dir_path.'/'.$file); 
} 
} 
} 
} 
return $is_writale; 
}

上面实例主要是fopen去在目录创建文件或在文件中写内容,这样就可以判断目录的读写权限了。
PHP 相关文章推荐
推荐个功能齐全的发送PHP邮件类
Jan 03 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
ThinkPHP分组下自定义标签库实例
Nov 01 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
php里array_work用法实例分析
Jul 13 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
php版银联支付接口开发简明教程
Oct 14 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
Aug 06 #PHP
php一个找二层目录的小东东
Aug 02 #PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 #PHP
PHP服务器页面间跳转实现方法
Aug 02 #PHP
php中3des加密代码(完全与.net中的兼容)
Aug 02 #PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 #PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 #PHP
You might like
领悟php接口中interface存在的意义
2013/06/27 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
JavaScript定时器和优化的取消定时器方法
2015/07/03 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
使用Python &amp; Flask 实现RESTful Web API的实例
2017/09/19 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
用python解压分析jar包实例
2020/01/16 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
小学教师的个人自我鉴定
2013/10/26 职场文书
信息管理专业推荐信
2013/10/29 职场文书
学校读书活动总结
2014/06/30 职场文书
行风评议整改报告
2014/11/06 职场文书
小学教师工作总结2015
2015/04/07 职场文书
英文辞职信范文
2015/05/13 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL