디렉토리가 존재하는지 확인하려면 어떻게 해야 합니까?" is_filename", "file_filename" 또는 둘 다입니까?
디렉토리가 존재하지 않는 경우는, 그것을 작성하려고 합니다.
를 사용하고 있다is_dir
그 목적에 충분한 기능을 하고 있는가?
if ( !is_dir( $dir ) ) {
mkdir( $dir );
}
아니면 합칠까요?is_dir
와 함께file_exists
?
if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
mkdir( $dir );
}
Unix 시스템에서는 둘 다 true가 반환됩니다. Unix에서는 디렉토리를 포함한 모든 것이 파일입니다.그러나 이 이름이 사용되었는지 테스트하려면 둘 다 확인해야 합니다.'foo'라는 이름의 일반 파일이 있을 수 있으므로 디렉터리 이름 'foo'를 만들 수 없습니다.
$dirname = $_POST["search"];
$filename = "/folder/" . $dirname . "/";
if (!file_exists($filename)) {
mkdir("folder/" . $dirname, 0777);
echo "The directory $dirname was successfully created.";
exit;
} else {
echo "The directory $dirname exists.";
}
경로가 존재하는지 여부를 검증하는 가장 좋은 방법은 realpath()라고 생각합니다.http://www.php.net/realpath
다음은 기능의 예를 제시하겠습니다.
<?php
/**
* Checks if a folder exist and return canonicalized absolute pathname (long version)
* @param string $folder the path being checked.
* @return mixed returns the canonicalized absolute pathname on success otherwise FALSE is returned
*/
function folder_exist($folder)
{
// Get canonicalized absolute pathname
$path = realpath($folder);
// If it exist, check if it's a directory
if($path !== false AND is_dir($path))
{
// Return canonicalized absolute pathname
return $path;
}
// Path/folder does not exist
return false;
}
동일한 기능의 짧은 버전
<?php
/**
* Checks if a folder exist and return canonicalized absolute pathname (sort version)
* @param string $folder the path being checked.
* @return mixed returns the canonicalized absolute pathname on success otherwise FALSE is returned
*/
function folder_exist($folder)
{
// Get canonicalized absolute pathname
$path = realpath($folder);
// If it exist, check if it's a directory
return ($path !== false AND is_dir($path)) ? $path : false;
}
출력 예시
<?php
/** CASE 1 **/
$input = '/some/path/which/does/not/exist';
var_dump($input); // string(31) "/some/path/which/does/not/exist"
$output = folder_exist($input);
var_dump($output); // bool(false)
/** CASE 2 **/
$input = '/home';
var_dump($input);
$output = folder_exist($input); // string(5) "/home"
var_dump($output); // string(5) "/home"
/** CASE 3 **/
$input = '/home/..';
var_dump($input); // string(8) "/home/.."
$output = folder_exist($input);
var_dump($output); // string(1) "/"
사용.
<?php
$folder = '/foo/bar';
if(FALSE !== ($path = folder_exist($folder)))
{
die('Folder ' . $path . ' already exist');
}
mkdir($folder);
// Continue do stuff
같은 이름의 파일이 이미 있지만 디렉토리가 아닌 경우 문제가 있는 게시물의 두 번째 변형은 적합하지 않습니다.!file_exists($dir)
돌아온다false
폴더는 생성되지 않으므로 오류가 발생합니다."failed to open stream: No such file or directory"
발생합니다.Windows 에서는, 「파일」타입과 「폴더」타입의 차이가 있기 때문에, 를 사용할 필요가 있습니다.file_exists()
그리고.is_dir()
동시에 (예:
if (file_exists('file')) {
if (!is_dir('file')) { //if file is already present, but it's not a dir
//do something with file - delete, rename, etc.
unlink('file'); //for example
mkdir('file', NEEDED_ACCESS_LEVEL);
}
} else { //no file exists with this name
mkdir('file', NEEDED_ACCESS_LEVEL);
}
저도 같은 의문을 가지고 있었습니다만, PHP 문서를 참조해 주세요.
https://www.php.net/manual/en/function.file-exists.php
https://www.php.net/manual/en/function.is-dir.php
곧 알게 될 것이다is_dir()
두 가지 속성을 모두 갖습니다.
Return Values 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);
}
$save_folder = "some/path/" . date('dmy');
if (!file_exists($save_folder)) {
mkdir($save_folder, 0777);
}
이것은 오래되었지만 여전히 시사적인 질문이다.를 사용하여 테스트합니다.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();
이게 내가 하는 일이야
if(is_dir("./folder/test"))
{
echo "Exist";
}else{
echo "Not exist";
}
경로가 디렉토리인지 확인하는 방법은 다음과 같습니다.
function isDirectory($path) {
$all = @scandir($path);
return $all !== false;
}
메모: 존재하지 않는 경로에도 false가 반환되지만 UNIX/Windows에서는 완벽하게 동작합니다.
나는 이것이 dir check를 위한 빠른 해결책이라고 생각한다.
$path = realpath($Newfolder);
if (!empty($path)){
echo "1";
}else{
echo "0";
}
언급URL : https://stackoverflow.com/questions/5425891/how-do-i-check-if-a-directory-exists-is-dir-file-exists-or-both
'source' 카테고리의 다른 글
Javascript에서 개체에서 빈 특성 제거 (0) | 2022.11.28 |
---|---|
두 이미지를 PHP와 병합 (0) | 2022.11.28 |
MyISAM에 비해 TokuDB와 InnoDB 삽입이 느린 이유 (0) | 2022.11.28 |
ImportError: Python2를 사용하는 mysql.connector라는 이름의 모듈이 없습니다. (0) | 2022.11.28 |
cURL을 사용하여 베어러 토큰을 설정하는 올바른 방법 (0) | 2022.11.28 |