php 检查路劲是否存在,php 检查文件或目录是否存在代码总结
/**
* 文件或目录权限检查函数
*
* @access public
* @param string $file_path 文件路径
* @param bool $rename_prv 是否在检查修改权限时检查执行rename()函数的权限
*
* @return int 返回值的取值范围为{0 <= x <= 15},每个值表示的含义可由四位二进制数组合推出。
* 返回值在二进制计数法中,四位由高到低分别代表
* 可执行rename()函数权限、可对文件追加内容权限、可写入文件权限、可读取文件权限。
*/
function file_mode_info($file_path)
{
/* 如果不存在,则不可读、不可写、不可改 */
if (!file_exists($file_path))
{
return false;
}
$mark = 0;
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
{
/* 测试文件 */
$test_file = $file_path . '/cf_test.txt';
/* 如果是目录 */
if (is_dir($file_path))
{
/* 检查目录是否可读 */
$dir = @opendir($file_path);
if ($dir === false)
{
return $mark; //如果目录打开失败,直接返回目录不可修改、不可写、不可读
}
if (@readdir($dir) !== false)
{
$mark ^= 1; //目录可读 001,目录不可读 000
}
@closedir($dir);
/* 检查目录是否可写 */
$fp = @fopen($test_file, 'wb');
if ($fp === false)
{
return $mark; //如果目录中的文件创建失败,返回不可写。
}
if (@fwrite($fp, 'directory access testing.') !== false)
{
$mark ^= 2; //目录可写可读011,目录可写不可读 010
}
@fclose($fp);
@unlink($test_file);
/* 检查目录是否可修改 */
$fp = @fopen($test_file, 'ab+');
if ($fp === false)
{
return $mark;
}
if (@fwrite($fp, "modify test.rn") !== false)
{
$mark ^= 4;
}
@fclose($fp);
/* 检查目录下是否有执行rename()函数的权限 */
if (@rename($test_file, $test_file) !== false)
{
$mark ^= 8;
}
@unlink($test_file);
}
/* 如果是文件 */
elseif (is_file($file_path))
{
/* 以读方式打开 */
$fp = @fopen($file_path, 'rb');
if ($fp)
{
$mark ^= 1; //可读 001
}
@fclose($fp);
/* 试着修改文件 */
$fp = @fopen($file_path, 'ab+');
if ($fp && @fwrite($fp, '') !== false)
{
$mark ^= 6; //可修改可写可读 111,不可修改可写可读011...
}
@fclose($fp);
/* 检查目录下是否有执行rename()函数的权限 */
if (@rename($test_file, $test_file) !== false)
{
$mark ^= 8;
}
}
}
else
{
if (@is_readable($file_path))
{
$mark ^= 1;
}
if (@is_writable($file_path))
{
$mark ^= 14;
}
}
return $mark;
}
php 检查路劲是否存在,php 检查文件或目录是否存在代码总结相关推荐
- 修改pppd拨号软件的DNS保存路劲以及/etc/resolv.conf文件DNS会被覆盖问题
修改pppd拨号软件的DNS保存路劲 目的 一.从源码中找到pppd源码,修改DNS写入路劲 二.修改写入方式 三.编译 四.最后的补充,最好的解决方案 目的 在arm板中,pppd拨号软件获取的DN ...
- python相对路径-Python中的绝对路劲和相对路径
1.绝对路径 os.path.abspath("文件名"): 显示的是一个文件的绝对路劲 eg: >>> import os >>> os.ch ...
- GBDT家族:GBDT家族成员的演进路劲、xgboost模型、lightGBM、LightGBM 相对于 XGBoost 的优点、catboost、xgboost、catboost、lightGBM对
GBDT家族:GBDT家族成员的演进路劲.xgboost模型.lightGBM.LightGBM 相对于 XGBoost 的优点.catboost.xgboost.catboost.lightGBM对 ...
- 修改Eclipse发布路劲(Deploy path)
Eclipse默认的发布路劲在用户的workspace里,比较难找,为了方便查看,可以将发布路劲修改为自己想要的. 修改方法: 1.先stop Servers下tomcat里的项目,然后remove ...
- weblogic概览下的上下文根配置_Weblogic服务下获取上下文路劲问题
问题描述: 如果一个项目用weblogic部署的服务,在web_inf文件夹下只有web.xml文件,没有配置weblogic.xml文件时,这是用 类.class.getClassLoader(). ...
- java的未检查异常有哪些_Java:检查异常与未检查异常
一.异常的介绍 Throwable 是 Java 中所有错误和异常的超类.Java 虚拟机仅抛出属于此类(或其子类之一)的实例对象,或者是 throw 语句也可以抛出该对象.同样,catch 子句中的 ...
- UEditor 1.36 版本 jsp版上传图片自定义路劲配置
2019独角兽企业重金招聘Python工程师标准>>> 由于项目需要,最近使用了ueditor,并实现了图片以及文件的上传功能.走了不少弯路,花了点时间总结总结,记录一下以防忘记! ...
- 服务器取绝对路劲的问题
服务器环境中取当前classPath的绝对路劲: 第一种方式: ClassLoader loader = Thread.currentThread().getContextClassLoader(); ...
- java 检测目录下的文件_如何在Java中检查文件是目录还是文件
java 检测目录下的文件 java.io.File class contains two methods using which we can find out if the file is a d ...
最新文章
- 我总结的30条架构原则
- 让文本输入框只能输入数字
- 如何快速找到最优路线?深入理解游戏中寻路算法
- python参数化_Python 中如何实现参数化测试的方法示例
- 最长非单调增序列(最长非单调增序列,,要用N*LOG N(非常值得琢磨的算法。)...
- python输出星号_Python的星号(*、**)的作用
- 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
- 仿微信导航栏滑动门练习
- pc系统安全问题让你防不胜防--安装系统屏保时,偶然发现没有安装的ie工具栏软件baidu_jpwb(Just Under/WINDOWS)!
- vs2015安装vs assist 教程
- 进出队C语言不用链表,C语言面试题总汇简要
- 计算机基础课程听课记录,听课记录-计算机应用基础
- MySQL math函数
- 色彩大全,色彩配色大全
- ansible使用之——网络设备自动巡检
- 郑州互联网公司和生活成本
- kali渗透实战02---获取内网QQ相册
- Cadence Orcad Capture CIS 如何替换元器件所有信息
- PDMS二次开发(一)——PML类型程序类型与概念
- x的四次方+1因式分解
热门文章
- linux用户怎么归纳到组,Linux用户和组命令总结
- 今晚直播 | Oracle技术加油站:快速处理紧急性能问题的工具与经验
- Oracle 20c 新特性知多少?ANSI SQL 全支持之 EXCEPT 运算符增强
- 外连接有 OR 关联条件只能走 NL优化
- 一文带你梳理Clang编译步骤及命令
- WeLink的杀手锏和远程办公软件的另一面
- 从五大结构体,带你掌握鸿蒙轻内核动态内存Dynamic Memory
- 华为云PB级数据库GaussDB(for Redis)揭秘第九期:与HBase的对比
- 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】
- Python爬虫从入门到精通——基本库re的使用:正则表达式