Php có tệp . Cú pháp và cách sử dụng hàm file_exists. Xóa một thư mục không trống

Đôi khi, bạn cần kiểm tra xem một tệp được chỉ định có tồn tại hay không, chẳng hạn như để thực hiện một số hành động trên tệp sau đó.

Tôi cũng gặp phải vấn đề này khi phát triển mô-đun. Và tôi tìm thấy hai lựa chọn để giải quyết vấn đề.

Kiểm tra sự tồn tại của tệp bằng liên kết URL

Trong PHP có một hàm " fopen", có thể được sử dụng để mở URL được chỉ định.

Chúng ta đang làm gì vậy? Chúng tôi cố gắng mở tệp và nếu thành công thì tệp đó tồn tại, nếu không thì tệp không tồn tại.

Thực hiện:

Nhưng điều gì sẽ xảy ra nếu chúng ta không có một tệp mà có nhiều tệp, có thể nói là một mảng liên kết? Đây chính xác là nhiệm vụ đã đặt ra trước mắt tôi ngay từ đầu. Và giải pháp cho vấn đề này như sau:

Trong trường hợp này, chúng tôi nhận được danh sách chỉ những tệp tồn tại.

Kiểm tra sự tồn tại của một tập tin cục bộ

Từ “cục bộ” có nghĩa là tập lệnh và tệp để xác minh được đặt trên cùng một máy chủ. Nếu bạn có một loạt liên kết khá lớn, tùy chọn này là tùy chọn tốt nhất để giải quyết vấn đề, vì chúng tôi không đưa ra yêu cầu tới máy chủ của bên thứ ba mà quét các thư mục được chỉ định.

Phương thức này sử dụng hàm “file_exists” và tương tự với tùy chọn trước đó, chỉ cần thay thế một phần của tập lệnh:

Và tương tự cho mảng liên kết:

Điều này có đáng không ghi chú? Thực tế là phương pháp này thuận tiện cho việc chạy các tệp nằm trong hệ thống tập tin. Vì vậy, nên chỉ ra tất cả các liên kết là liên kết tương đối.

Nhân tiện, khi thực hiện một trong các đơn đặt hàng, bằng phương pháp này, tôi có thể quét khoảng 135.000 tệp chỉ trong vài giây.

Đôi khi, bạn cần kiểm tra xem một tệp được chỉ định có tồn tại hay không, chẳng hạn như để thực hiện một số hành động trên tệp sau đó.

Tôi cũng gặp phải vấn đề này khi phát triển mô-đun. Và tôi tìm thấy hai lựa chọn để giải quyết vấn đề.

Kiểm tra sự tồn tại của tệp bằng liên kết URL

Trong PHP có một hàm " fopen", có thể được sử dụng để mở URL được chỉ định.

Chúng ta đang làm gì vậy? Chúng tôi cố gắng mở tệp và nếu thành công thì tệp đó tồn tại, nếu không thì tệp không tồn tại.

Thực hiện:

Nhưng điều gì sẽ xảy ra nếu chúng ta không có một tệp mà có nhiều tệp, có thể nói là một mảng liên kết? Đây chính xác là nhiệm vụ đã đặt ra trước mắt tôi ngay từ đầu. Và giải pháp cho vấn đề này như sau:

Trong trường hợp này, chúng tôi nhận được danh sách chỉ những tệp tồn tại.

Kiểm tra sự tồn tại của một tập tin cục bộ

Từ “cục bộ” có nghĩa là tập lệnh và tệp để xác minh được đặt trên cùng một máy chủ. Nếu bạn có một loạt liên kết khá lớn, tùy chọn này là tùy chọn tốt nhất để giải quyết vấn đề, vì chúng tôi không đưa ra yêu cầu tới máy chủ của bên thứ ba mà quét các thư mục được chỉ định.

Phương thức này sử dụng hàm “file_exists” và tương tự với tùy chọn trước đó, chỉ cần thay thế một phần của tập lệnh:

Và tương tự cho mảng liên kết:

Điều này có đáng không ghi chú? Thực tế là phương pháp này thuận tiện cho việc chạy các tệp nằm trong hệ thống tệp của chúng tôi. Vì vậy, nên chỉ ra tất cả các liên kết là liên kết tương đối.

Nhân tiện, khi thực hiện một trong các đơn đặt hàng, bằng phương pháp này, tôi có thể quét khoảng 135.000 tệp chỉ trong vài giây.

Tham số bắt buộc cho hàm này là tên đường dẫn, chỉ định đường dẫn đến thư mục cần tạo.

mkdir( "thư mục mới" );

Nếu bạn chỉ định thư mục theo cách này, nó sẽ được tạo trong cùng thư mục mà tập lệnh PHP được khởi chạy. Nếu bạn cần tạo thư mục ở một vị trí khác, bạn có thể chỉ định đường dẫn tương đối vào thư mục sẽ được tạo hoặc chỉ định đường dẫn đầy đủ từ thư mục gốc của trang.

mkdir( "../thư mục mới" ); // xuống một cấp

mkdir("/folder1/folder2/newfolder" ); // đường dẫn đầy đủ

Trong ví dụ cuối cùng điều kiện tiên quyết sẽ có sự tồn tại của thư mục con "folder1" và "folder2". Nếu chúng không có ở đó, hàm trong biểu mẫu này sẽ không thể tạo thư mục và sẽ trả về lỗi:

Cảnh báo: mkdir() : Không có tập tin hoặc thư mục như vậy trong …

Nếu thành công, hàm trả về True. Nếu gói không được tạo, giá trị Sai sẽ được trả về.

if (mkdir("thư mục mới"))
tiếng vọng "Thư mục được tạo thành công";
khác
tiếng vọng "Thư mục chưa được tạo";

Nhưng bạn không nên sử dụng chức năng này mà không kiểm tra sự hiện diện của thư mục, vì máy chủ vẫn sẽ hiển thị lỗi không thể tạo được thư mục.

Gán quyền khi tạo thư mục

Để chuyển nhượng quyền cho thư mục đang được tạo tương ứng với tham số tùy chọn thứ hai hàm mkdir. Theo mặc định, các đặc quyền tối đa được chỉ định – 0777.

Quyền được chỉ định bằng cách sử dụng giá trị bát phân với số 0 bắt buộc ở đầu. Ngoài số 0 đầu tiên, các con số thể hiện cấp độ truy cập của chủ sở hữu, nhóm của chủ sở hữu và mọi người khác.

0 – quyền truy cập bị từ chối;

1 – quyền truy cập đọc;

2 – quyền truy cập ghi;

4 – truy cập thực thi.

Thông thường, các quyền được chỉ định dưới dạng số tiền tổng hợp, ví dụ:

7 – toàn quyền truy cập (1+2+4);

5 – đọc và thực thi (1+4).

mkdir( "thư mục mới", 0777); // toàn quyền truy cập cho mọi người

Tạo nhiều thư mục con lồng nhau

Bạn có thể tạo nhiều thư mục con cùng một lúc bằng cách chỉ định một tham số Boolean tùy chọn khác – đệ quy.

mkdir("folder1/folder2/newfolder", 0777, True); // toàn quyền truy cập cho mọi người

Trong trường hợp này, nếu không có thư mục "folder1" và "folder2", hàm sẽ tạo cả hai thư mục đó và thư mục "newfolder". Nếu không có vấn đề nào khác phát sinh thì sẽ không có thông báo lỗi nào được hiển thị và hàm sẽ trả về True.

Xóa một thư mục

Bạn có thể xóa một thư mục trống trong PHP chức năng rmdir. Tham số dirname cũng chỉ định đường dẫn đầy đủ hoặc tương đối đến thư mục cần xóa:

rmdir( "thư mục của tôi" );

rmdir("folder1/folder2/myfolder" );

Trong mỗi trường hợp này, chỉ có thư mục "myfolder" bị xóa. Nếu không có thư mục hoặc đường dẫn được chỉ định không chính xác, sẽ hiển thị lỗi:

Cảnh báo: rmdir(myfolder): Không có tập tin hoặc thư mục như vậy trong ...

Xóa một thư mục không trống

Việc xóa một thư mục không trống được thực hiện tuần tự xóa tập tin đính kèm trong thư mục chức năng hủy liên kết rồi xóa thư mục trống chức năng rmdir. Bạn có thể sử dụng một chức năng như thế này để làm điều này:

hàm my_delete_dir($mypath)(
$dir = opendir($mypath);
trong khi (($file = readdir($dir)))(
if (is_file($mypath."/" .$file))
hủy liên kết($mypath. "/" .$file);
elseif (is_dir($mypath."/" .$file) && ($file != "." ) && ($file != ".." ))
my_delete_dir($mypath."/" .$file);
}
closeir($dir);
rmdir($mypath);
}

my_delete_dir("myfolder" ); // gọi hàm

Kiểm tra sự tồn tại của một thư mục

Trước hầu hết các thao tác với thư mục, cần kiểm tra xem chúng có tồn tại hay không. Với mục đích này nó được sử dụng hàm file_exists.

Ngoài ra, bạn cần đảm bảo rằng đối tượng được chỉ định là một thư mục chứ không phải tệp - hàm is_dir. Thư mục cần quét được chỉ định bằng đường dẫn tương đối hoặc đầy đủ.

if (file_exists("myfolder"))
tiếng vọng "Thư mục được chỉ định tồn tại";
khác
tiếng vọng "Thư mục được chỉ định không tồn tại";

if (is_dir("myfolder"))
tiếng vọng "Đối tượng được chỉ định thư mục";
khác
tiếng vọng "Đối tượng được chỉ định không phải là một thư mục";