Các tệp máy tính được lưu trữ trên thiết bị lưu trữ cục bộ (gọi là drive ) theo thứ tự phân cấp, trong đó một thư mục chứa một hoặc nhiều tệp cũng như các thư mục con. Các lệnh DOS tương ứng được định nghĩa trong các hệ điều hành như Windows, Linux, v.v. được sử dụng để tạo và quản lý các thư mục.
PHP cung cấp các hàm quản lý thư mục để tạo thư mục, thay đổi thư mục hiện tại và xóa một thư mục nhất định.
Chương này thảo luận về việc sử dụng các hàm thư mục sau trong PHP −
Hàm mkdir() tạo một thư mục mới mà đường dẫn được cung cấp là một trong các tham số của hàm.
mkdir( string $directory, int $permissions = 0777, bool $recursive = false, ?resource $context = null ): bool
$directory − Tham số đầu tiên $directory là bắt buộc. Nó là một chuỗi với đường dẫn tuyệt đối hoặc tương đối của thư mục mới sẽ được tạo.
$permissions − Tham số thứ hai $permissions là một số bát phân với bốn chữ số bát phân. Chữ số đầu tiên luôn là số không, chữ số thứ hai chỉ định quyền cho chủ sở hữu, chữ số thứ ba cho nhóm người dùng của chủ sở hữu và chữ số thứ tư cho mọi người khác.
Mỗi chữ số là tổng giá trị cho mỗi loại quyền truy cập -
1 = quyền thực thi
2 = quyền ghi
4 = quyền đọc
Giá trị mặc định của tham số $permissions là 0777 , có nghĩa là thư mục được tạo với quyền thực thi, ghi và đọc được bật.
Lưu ý rằng tham số $permissions sẽ bị bỏ qua khi làm việc trên hệ điều hành Windows.
$recursive − Nếu đúng, thì bất kỳ thư mục cha nào của thư mục được chỉ định cũng sẽ được tạo ra, với cùng quyền truy cập.
$context − Tham số tùy chọn này là tài nguyên luồng.
Hàm mkdir() trả về giá trị true hoặc false, cho biết hàm đã được thực thi thành công hay không.
Dưới đây là một số ví dụ về hàm mkdir().
Lệnh gọi mkdir() dưới đây tạo một thư mục con bên trong thư mục làm việc hiện tại. Dấu chấm cho biết rằng đường dẫn là tương đối.
$dir = "./mydir/"; mkdir($dir);
Chúng ta có thể cung cấp tham số chuỗi chứa đường dẫn tuyệt đối của thư mục cần được tạo.
$dir = "c:/newdir/"; mkdir($dir);
Lời gọi sau đây đến hàm mkdir() chứa cấu trúc thư mục lồng nhau bên trong thư mục hiện tại, vì tham số $recursive được đặt thành true.
$dirs = "./dir1/dir2/dir3/"; mkdir($dirs, 0777, true);
Trình khám phá Windows sẽ hiển thị cấu trúc thư mục lồng nhau như sau −
Hàm chdir() trong PHP tương ứng với lệnh chdir hoặc cd trong Linux/Windows. Nó khiến thư mục hiện tại được thay đổi theo yêu cầu.
chdir(string $directory): bool
Tham số chuỗi cho hàm này là một đường dẫn tuyệt đối hoặc tương đối đến một thư mục mà thư mục hiện tại cần được thay đổi đến. Nó trả về true hoặc false.
Hàm getcwd() hoạt động tương tự như lệnh pwd trong Ubuntu Linux, và trả về đường dẫn đến thư mục làm việc hiện tại.
Với đoạn mã sau, PHP hiển thị thư mục làm việc hiện tại trước và sau khi thay đổi thư mục làm việc hiện tại. Một vài tệp tin được tạo bên trong thư mục hiện tại mới. Với hàm scandir(), các tệp tin được liệt kê.
<?php echo "current directory: ". getcwd() . PHP_EOL; $dir = "./mydir"; chdir($dir); echo "current directory changed to: ". getcwd() .PHP_EOL; $fp = fopen("a.txt", "w"); fwrite($fp, "Hello World"); fclose($fp); copy("a.txt", "b.txt"); $dir = getcwd(); foreach(scandir($dir) as $file) echo $file . PHP_EOL; ?>
Nó sẽ tạo ra output −
current directory: C:\xampp\php current directory changed to: C:\xampp\php\mydir . .. a.txt b.txt
Hàm rmdir() xóa một thư mục nhất định mà đường dẫn của nó được cung cấp dưới dạng tham số. Thư mục cần xóa phải trống.
$dir = "c:/newdir/"; rmdir($dir) or die("The directory is not present or not empty");