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 相关文章推荐
PHP4实际应用经验篇(1)
Oct 09 PHP
PHP经典的给图片加水印程序
Dec 06 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
Nov 07 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
PHP递归实现层级树状展开
Apr 01 PHP
php_pdo 预处理语句详解
Nov 21 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
Jul 31 PHP
PHP后台实现微信小程序登录
Aug 03 PHP
Laravel 实现数据软删除功能
Aug 21 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
Oct 17 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&amp;java(三)
2006/10/09 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
javascript常用对话框小集
2013/09/13 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
python发送HTTP请求的方法小结
2015/07/08 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
python创建学生成绩管理系统
2019/11/22 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
财务会计应届生求职信
2013/11/24 职场文书
3分钟演讲稿
2014/04/30 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
建国大业观后感600字
2015/06/01 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
详解MongoDB的条件查询和排序
2021/06/23 MongoDB