zl程序教程

您现在的位置是:首页 >  后端

当前栏目

php中检查文件或目录是否存在的代码小结

PHP文件代码 目录 是否 存在 小结 检查
2023-06-13 09:14:40 时间
下面是一个简单的检查文件是否存在的实例代码:
复制代码代码如下:

<?php
$filename="/path/to/foo.txt";
if(file_exists($filename)){
echo"Thefile$filenameexists";
}else{
echo"Thefile$filenamedoesnotexist";
}
?>

如果文件存在,执行该PHP文件的显示结果是:
ThefileC:blablaphphello.txtexists.
如果文件不存在,执行该PHP文件的显示结果是:
ThefileC:\blabla\phphello.txtdoesnotexist.
你也可以用file_exists函数测试某个目录是否存在,示例代码如下:
复制代码代码如下:

if(file_exists("C:\blabla\php"))
{echo"yes";}
else
{echo"no";}

实例
复制代码代码如下:
/**
*文件或目录权限检查函数
*
*@accesspublic
*@paramstring$file_path文件路径
*@parambool$rename_prv是否在检查修改权限时检查执行rename()函数的权限
*
*@returnint返回值的取值范围为{0<=x<=15},每个值表示的含义可由四位二进制数组合推出。
*返回值在二进制计数法中,四位由高到低分别代表
*可执行rename()函数权限、可对文件追加内容权限、可写入文件权限、可读取文件权限。
*/
functionfile_mode_info($file_path)
{
/*如果不存在,则不可读、不可写、不可改*/
if(!file_exists($file_path))
{
returnfalse;
}
$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,"directoryaccesstesting.")!==false)
{
$mark^=2;//目录可写可读011,目录可写不可读010
}
@fclose($fp);
@unlink($test_file);
/*检查目录是否可修改*/
$fp=@fopen($test_file,"ab+");
if($fp===false)
{
return$mark;
}
if(@fwrite($fp,"modifytest.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判断目录是否存在
复制代码代码如下:
/****************************************************
*将xml数据流,写入到xml文件
*@param$xmlData
*@returnbool|string
*/
functionwriteXmlFile($xmlData)
{
$time=time();//获取时间戳,用于给文件命名
$path=dirname(__FILE__);//获取当前绝对路径
$path=substr_replace($path,"",stripos($path,"actions\data"));//将此文件所在的固有路径替换成空
$path.="xmlFiles\";//存放目录名
/*判断目标目录是否存在,不存在则新建*/
if(!is_dir($path))
{
mkdir($path);//新建目录
}
/*记录完整路径和文件名*/
$filePathAndName=$path.$time.".xml";
/*打开文件,文件名为<时间戳>+<.xml>*/
$fp=fopen($filePathAndName,"w");
if(!$fp)
{
returnfalse;
}
/*写入文件流*/
$flag=fwrite($fp,$xmlData);
if(!$flag)
{
returnfalse;
}
fclose($fp);
return$filePathAndName;
}