Hàm mkdir() trong PHP

06/08/2020 - lượt xem
Chia sẻ
 
2/5 - (1 bình chọn)

Định nghĩa.

Hàm mkdir() sẽ tạo mới thư mục theo đúng đường dẫn truyền vào.

Cú pháp.

Cú pháp:

mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = FALSE [, resource $context ]]] ) : bool

Trong đó.

  • $filename là đường dẫn sẽ tạo thư mục.
  • $mode là quyền của thư mục, mặc định là 0777. – mode  là 0777 theo mặc định, có nghĩa là truy cập rộng nhất có thể. Để biết thêm thông tin về các chế độ, hãy đọc chi tiết trên trang chmod (). –mode  bị bỏ qua trên Windows. – Lưu ý rằng bạn có thể muốn chỉ định chế độ là số bát phân, có nghĩa là nó phải có số 0 đứng đầu. Chế độ cũng được sửa đổi bởi ô hiện tại, bạn có thể thay đổi bằng cách sử dụng umask ().
  • $recursive là tham số, mặc định là False, nếu mang giá trị True sẽ cho phép tạo các thư mục lồng nhau.
  • $context mô tả về ngữ cảnh.

Giá trị trả về.

  • Hàm sẽ trả về True nếu tạo thư mục thành công, ngược lại hàm trả về False.

Ví dụ.

Ví dụ 1.

code.

<?php
mkdir("/path/to/my/dir", 0700);
?>

Ví dụ # 2 mkdir () sử dụng tham số recursive 

<?php
// Cấu trúc thư mục mong muốn
$structure = './depth1/depth2/depth3/';

// Để tạo cấu trúc lồng nhau,, the $recursive parameter 
// to mkdir() must be specified.

if (!mkdir($structure, 0777, true)) {
    die('Failed to create folders...');
}

// ...
?>

Errors/Exceptions.

  • Phát ra lỗi mức E_WARNING nếu thư mục đã tồn tại.
  • Phát ra lỗi cấp độ E_WARNING nếu các quyền liên quan ngăn chặn việc tạo thư mục.

Ghi chú.

  • Lưu ý: Khi safe mode được bật, PHP sẽ kiểm tra xem thư mục mà tập lệnh đang hoạt động có cùng UID (chủ sở hữu) với tập lệnh đang được thực thi hay không.

Hàm liên quan.

  • is_dir() – Cho biết tên tệp là một thư mục
  • rmdir() – Xóa thư mục

Thông tin thêm.

  • Khi sử dụng recursive , hãy nhớ rằng nếu bạn đang sử dụng chmod () sau mkdir () để đặt chế độ mà không bị sửa đổi bởi giá trị của uchar (), bạn cần gọi chmod () trên tất cả các thư mục đã tạo.
    <?php
    mkdir('/test1/test2', 0777, true);
    chmod('/test1/test2', 0777);
    ?>
  • Chức năng tạo thư mục recursive  và có thể ghi, nếu chúng tôi có quyền, mà không tạo cảnh báo: * Tạo thư mục có thể ghi chính xác. * Kiểm tra nếu thư mục tồn tại và có thể ghi. * Nếu không tồn tại hãy thử tạo nó một lần ghi.
    function createWritableFolder($folder)
    {
        if($folder != '.' && $folder != '/' ) {
            createWritableFolder(dirname($folder));
        }
        if (file_exists($folder)) {
            return is_writable($folder);
        }
    
        return is_writable($folder) && mkdir($folder, 0777, true);
    }
  •  Chế độ trên thư mục của bạn bị ảnh hưởng bởi ô hiện tại của bạn. Nó sẽ kết thúc có (<mkdir-mode> và (không phải <umask>)). Nếu bạn muốn tạo một có thể đọc được công khai, hãy làm một cái gì đó như thế này:
    <?php
    $oldumask = umask(0);
    mkdir('mydir', 0777); // or even 01777 so you get the sticky bit set
    umask($oldumask);
    ?>
  • Xin lưu ý rằng trong một môi trường được chia sẻ, tôi đã không tính đến một ô hiện có khi tôi thực hiện một mkdir (dirname, 0755). Điều này đã kết thúc việc tạo thư mục (hàm trả về đúng), nhưng tôi không có quyền làm bất cứ điều gì trong thư mục, thậm chí tôi cũng không thể xem nó tồn tại qua ftp. Tuy nhiên, file_exists (dirname) đã trả về đúng. Cuối cùng, tôi đã tìm ra những gì đã xảy ra và có thể rmdir (dirname), sau đó tạo thư mục chính xác. Vì vậy, khi viết các tập lệnh mà bạn mong muốn có thể mang theo được, hãy sử dụng ô để đặt ô của bạn phù hợp hoặc thực hiện một mkdir (dirname) thẳng theo sau là chmod (dirname, 0755) (hoặc bất cứ thứ gì bạn đang tìm kiếm). Nếu bạn mắc lỗi tương tự tôi đã làm, bạn sẽ có thể rmdir () hoặc chmod () thư mục để nó có thể truy cập được.

Các bạn có thể xem chi tiết hơn trên php.net.

Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm mkdir() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    2/5 - (1 bình chọn)

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm