我想创建一个目录,如果它不存在。
使用is_dir函数就足够了吗?
if ( !is_dir( $dir ) ) {
mkdir( $dir );
}
或者我应该结合is_dir与file_exists?
if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
mkdir( $dir );
}
我想创建一个目录,如果它不存在。
使用is_dir函数就足够了吗?
if ( !is_dir( $dir ) ) {
mkdir( $dir );
}
或者我应该结合is_dir与file_exists?
if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
mkdir( $dir );
}
当前回答
这是一个老问题,但仍然是热门话题。只需要使用is_dir()或file_exists()函数测试是否存在。或. .在测试目录中的文件。每个目录必须包含以下文件:
is_dir("path_to_directory/.");
其他回答
好吧,而不是检查两者,你可以这样做if(stream_resolve_include_path($folder)!==false)。它速度较慢,但能一枪打死两只鸟。
另一个选择是忽略E_WARNING,而不是使用@mkdir(…);(因为这将简单地放弃所有可能的警告,不仅仅是目录已经存在一个),而是通过注册一个特定的错误处理程序,然后再这样做:
namespace com\stackoverflow;
set_error_handler(function($errno, $errm) {
if (strpos($errm,"exists") === false) throw new \Exception($errm); //or better: create your own FolderCreationException class
});
mkdir($folder);
/* possibly more mkdir instructions, which is when this becomes useful */
restore_error_handler();
我也有同样的疑问,但请参阅PHP文档:
https://www.php.net/manual/en/function.file-exists.php
https://www.php.net/manual/en/function.is-dir.php
您将看到is_dir()具有这两个属性。
返回值is_dir 如果文件名存在且为目录,则返回TRUE,否则返回FALSE。
$year = date("Y");
$month = date("m");
$filename = "../".$year;
$filename2 = "../".$year."/".$month;
if(file_exists($filename)){
if(file_exists($filename2)==false){
mkdir($filename2,0777);
}
}else{
mkdir($filename,0777);
}
我就是这么做的
if(is_dir("./folder/test"))
{
echo "Exist";
}else{
echo "Not exist";
}
这是一个老问题,但仍然是热门话题。只需要使用is_dir()或file_exists()函数测试是否存在。或. .在测试目录中的文件。每个目录必须包含以下文件:
is_dir("path_to_directory/.");