Hướng dẫn php check if directory exists - php kiểm tra xem thư mục có tồn tại không

Tôi muốn tạo một thư mục nếu nó chưa tồn tại.

Là sử dụng chức năng

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 
5 đủ cho mục đích đó?

if ( !is_dir( $dir ) ) {
    mkdir( $dir );       
}

Hay tôi nên kết hợp

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 
5 với
if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 
7?

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 

Hướng dẫn php check if directory exists - php kiểm tra xem thư mục có tồn tại không

Đã hỏi ngày 24 tháng 3 năm 2011 lúc 21:38Mar 24, 2011 at 21:38

6

Cả hai sẽ trả về True trên các hệ thống Unix - trong Unix Mọi thứ đều là một tệp, bao gồm cả các thư mục. Nhưng để kiểm tra nếu tên đó được lấy, bạn nên kiểm tra cả hai. Có thể có một tệp thông thường có tên 'FOO', điều này sẽ ngăn bạn tạo tên thư mục 'foo'.

Đã trả lời ngày 24 tháng 3 năm 2011 lúc 21:42Mar 24, 2011 at 21:42

Marc Bmarc bMarc B

352K42 Huy hiệu vàng405 Huy hiệu bạc488 Huy hiệu đồng42 gold badges405 silver badges488 bronze badges

3

$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.";
}

Nickb

58.6K12 Huy hiệu vàng102 Huy hiệu bạc141 Huy hiệu đồng12 gold badges102 silver badges141 bronze badges

Đã trả lời ngày 8 tháng 6 năm 2011 lúc 10:50Jun 8, 2011 at 10:50

MahermaherMaher

1.5091 huy hiệu vàng9 Huy hiệu bạc2 Huy hiệu đồng1 gold badge9 silver badges2 bronze badges

7

Tôi nghĩ realpath () có thể là cách tốt nhất để xác thực nếu một đường dẫn tồn tại http://www.php.net/realpath

Đây là một chức năng ví dụ:

<?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;
}

Phiên bản ngắn của cùng một chức năng

<?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;
}

Ví dụ đầu ra

<?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) "/"

Cách sử dụng

<?php

$folder = '/foo/bar';

if(FALSE !== ($path = folder_exist($folder)))
{
    die('Folder ' . $path . ' already exist');
}

mkdir($folder);
// Continue do stuff

Đã trả lời ngày 21 tháng 12 năm 2013 lúc 20:55Dec 21, 2013 at 20:55

Inckieinckieinckie

1521 Huy hiệu bạc11 Huy hiệu đồng1 silver badge11 bronze badges

2

Biến thể thứ hai trong bài câu hỏi không ổn, bởi vì, nếu bạn đã có tệp có cùng tên, nhưng nó không phải là thư mục,

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 
8 sẽ trả về
if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 
9, thư mục sẽ không được tạo, do đó sẽ xảy ra lỗi
$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.";
}
0. Trong Windows, có một sự khác biệt giữa các loại 'tệp' và 'thư mục', vì vậy cần sử dụng
$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.";
}
1 và
$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.";
}
2 cùng một lúc, cho Ex .:

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);
}

Đã trả lời ngày 8 tháng 3 năm 2016 lúc 9:37Mar 8, 2016 at 9:37

Hướng dẫn php check if directory exists - php kiểm tra xem thư mục có tồn tại không

Boolean_TypeBoolean_TypeBoolean_Type

1.0833 Huy hiệu vàng13 Huy hiệu bạc37 Huy hiệu đồng3 gold badges13 silver badges37 bronze badges

$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);
}

Đã trả lời ngày 10 tháng 10 năm 2013 lúc 7:15Oct 10, 2013 at 7:15

2

$save_folder = "some/path/" . date('dmy');

if (!file_exists($save_folder)) {
   mkdir($save_folder, 0777);
}

Đã trả lời ngày 11 tháng 6 năm 2015 lúc 8:00Jun 11, 2015 at 8:00

2

Đây là một câu hỏi cũ, nhưng vẫn còn chủ đề. Chỉ cần kiểm tra chức năng

$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.";
}
2 hoặc
$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.";
}
1 cho sự hiện diện của tệp
$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.";
}
5 hoặc
$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.";
}
6 trong thư mục được kiểm tra. Mỗi thư mục phải chứa các tệp sau:

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 
0

Robc

21.1K20 Huy hiệu vàng66 Huy hiệu bạc74 Huy hiệu đồng20 gold badges66 silver badges74 bronze badges

Đã trả lời ngày 25 tháng 10 năm 2019 lúc 13:59Oct 25, 2019 at 13:59

0

Vâng thay vì kiểm tra cả hai, bạn có thể làm

$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.";
}
7. Nó chậm hơn nhưng giết chết hai con chim trong một phát bắn.

Một tùy chọn khác chỉ đơn giản là bỏ qua

$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.";
}
8, không phải bằng cách sử dụng
$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.";
}
9 (vì điều đó chỉ đơn giản là từ bỏ tất cả các cảnh báo có thể, không chỉ thư mục đã tồn tại một), mà bằng cách đăng ký một trình xử lý lỗi cụ thể trước khi thực hiện:not by using
$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.";
}
9 (because that would simply waive all possible warnings, not just the directory already exists one), but by registering a specific error handler before doing it:

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 
1

Đã trả lời ngày 10 tháng 2 năm 2016 lúc 3:58Feb 10, 2016 at 3:58

SebassebasSebas

20.8k9 Huy hiệu vàng53 Huy hiệu bạc109 Huy hiệu đồng9 gold badges53 silver badges109 bronze badges

Đây là cách tôi làm

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 
2

Đã trả lời ngày 30 tháng 11 năm 2019 lúc 20:08Nov 30, 2019 at 20:08

1

Một cách để kiểm tra xem một đường dẫn là thư mục có thể theo dõi:

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 
3

Lưu ý: Nó cũng sẽ trả về sai cho đường dẫn không tồn tại, nhưng hoạt động hoàn hảo cho Unix/Windows

Đã trả lời ngày 2 tháng 1 năm 2020 lúc 16:42Jan 2, 2020 at 16:42

Hướng dẫn php check if directory exists - php kiểm tra xem thư mục có tồn tại không

Tôi nghĩ rằng đây là giải pháp nhanh để kiểm tra dir.

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 
4

Đã trả lời ngày 8 tháng 11 năm 2021 lúc 15:46Nov 8, 2021 at 15:46

Hướng dẫn php check if directory exists - php kiểm tra xem thư mục có tồn tại không

PHP có phải là một thư mục không?

Hàm is_dir () trong PHP được sử dụng để kiểm tra xem tệp được chỉ định có phải là thư mục hay không.Tên của tệp được gửi dưới dạng tham số cho hàm is_dir () và nó trả về true nếu tệp là một thư mục khác, nó trả về sai.Các tham số được sử dụng: Hàm is_dir () trong PHP chỉ chấp nhận một tham số.. The name of the file is sent as a parameter to the is_dir() function and it returns True if the file is a directory else it returns False. Parameters Used: The is_dir() function in PHP accepts only one parameter.

Có tồn tại trong PHP không?

Định nghĩa và cách sử dụng.Hàm isset () kiểm tra xem một biến được đặt, điều đó có nghĩa là nó phải được khai báo và không phải là null.Hàm này trả về đúng nếu biến tồn tại và không phải là null, nếu không nó sẽ trả về sai.The isset() function checks whether a variable is set, which means that it has to be declared and is not NULL. This function returns true if the variable exists and is not NULL, otherwise it returns false.

Làm thế nào để bạn kiểm tra tệp có tồn tại trong PHP không?

Hàm file_exists () kiểm tra xem một tệp hoặc thư mục có tồn tại hay không.file_exists() function checks whether a file or directory exists.

Chức năng IS_FILE trong PHP là gì?

Hàm is_file () trong PHP là hàm sẵn được sử dụng để kiểm tra xem tệp được chỉ định có phải là tệp thông thường hay không.Tên của tệp được gửi dưới dạng tham số cho hàm is_file () và nó trả về true nếu tệp là một tệp thông thường khác, nó trả về sai.an inbuilt function which is used to check whether the specified file is a regular file or not. The name of the file is sent as a parameter to the is_file() function and it returns True if the file is a regular file else it returns False.