PHP is_file so với file_exists

Chúng ta sẽ xem xét cách chúng ta có thể sử dụng hàm file_exists() trong PHP để kiểm tra xem một tệp hoặc thư mục có tồn tại trong các trường hợp sử dụng chẳng hạn như trước khi chúng ta cố gắng đọc hoặc ghi vào chúng hay không. Đây là một chức năng tích hợp được bao gồm trong lõi PHP từ phiên bản 4 trở đi

PHP File_Exists() Giới thiệu hàm và cú pháp

Hàm PHP file_exists() là một hàm tích hợp để kiểm tra xem một tệp hoặc thư mục đã cho có tồn tại hay không. Sự khác biệt chính giữa hàm này và hàm is_file() là hàm file_exists() trả về true cho cả tệp và thư mục trong khi hàm is_file() chỉ trả về true cho các tệp.  

Các tham số cho hàm PHP File_Exists

Tham số tên tệp là bắt buộc

tên tệp

Đây là tên của tệp hoặc thư mục chúng tôi muốn kiểm tra. Hàm mong đợi đây là một chuỗi

Giá trị trả về cho hàm PHP File_Exists

Hàm này trả về một giá trị boolean. true nếu tệp tồn tại và là một tệp thông thường hoặc một thư mục hoặc trả về false nếu không. Các kết quả được tạo ra từ chức năng này được lưu trữ.  

Ghi chú nhanh về hàm PHP File_Exists

Nếu bạn muốn mở một tệp cụ thể, bạn nên sử dụng hàm is_file() thay vì hàm này sẽ trả về false cho các thư mục. Hàm này sẽ kiểm tra xem một liên kết tượng trưng đã cho có tồn tại hay không bằng cách kiểm tra xem mục tiêu của liên kết có tồn tại hay không. Bạn có thể sử dụng chức năng này với trình bao bọc url chẳng hạn như http. // và ftp. // nếu trình bao bọc đã được bật. Hàm này phân biệt chữ hoa chữ thường trên các hệ thống tệp phân biệt chữ hoa chữ thường và phân biệt chữ hoa chữ thường trên các hệ thống tệp phân biệt chữ hoa chữ thường. Bạn có thể sử dụng stream_get_wrappers() để kiểm tra trình bao bọc url nào đã được bật trên máy chủ của bạn.  

Các lỗi và ngoại lệ thường gặp

Nếu tham số tên tệp là một chuỗi rỗng, hàm này sẽ trả về false và trả về lỗi mức E_WARNING. Nếu bạn đang cố truy cập một url từ xa chứ không phải thư mục hoặc tệp cục bộ, bạn có thể trả về false được trả về khi tệp tồn tại. Tốt nhất là sử dụng FTP.  

Các nền tảng sử dụng số nguyên 32 bit có thể trả về kết quả kém đối với các chức năng của hệ thống tệp, chẳng hạn như chức năng này trên các tệp lớn hơn 2 gigabyte. Điều này là do kiểu số nguyên của PHP được ký

Các ví dụ về hàm PHP File_Exists()

Hãy xem xét một số ví dụ về cách chúng ta có thể sử dụng hàm file_exists() để kiểm tra xem một tệp hoặc thư mục có tồn tại trong PHP không

Ví dụ PHP File_Exists() đơn giản để kiểm tra xem thư mục có tồn tại không

Ví dụ mã này thực hiện kiểm tra đơn giản để xem thư mục có tồn tại trên máy chủ không. Hãy nhớ thay đổi /folder1/folder2/ thành một thư mục thực tế trên hệ thống tệp của bạn.  


$directory = '/folder1/folder2/';
if(file_exists($directory)) { 
echo 'The directory exists'; 
} else {
echo 'The directory does not exist';
}

Nếu thư mục không tồn tại, bạn sẽ thấy đầu ra sau. “Thư mục không tồn tại”, nếu không thì bạn biết thư mục tồn tại. Hàm file_exists() rất hữu ích để kiểm tra đầu vào của người dùng trong quá trình gửi biểu mẫu để đảm bảo hình ảnh hoặc tài liệu tồn tại trước khi thử xử lý nó. Bạn có thể gặp một số lỗi lạ và liên kết bị hỏng nếu bạn không thực hiện các loại kiểm tra này trước

Kiểm tra nếu tệp tồn tại PHP

Ví dụ mã này kiểm tra xem tệp văn bản có tồn tại trong thư mục của bạn không. Nhớ thay đổi /myFolder/myfile. txt vào tệp thực tế trong hệ thống tệp của bạn và cập nhật "/" dựa trên hệ điều hành của bạn


$file = '/myFolder/myfile.txt';
if(file_exists($file)) {
echo 'The file exists';
} else {
echo 'The file does not exist';}

Nếu tệp không tồn tại, bạn sẽ thấy đầu ra tiếng vang sau. “Tệp không tồn tại”, nếu không thì bạn biết tệp văn bản tồn tại và mã PHP của bạn có thể truy cập tệp dựa trên quyền của tệp. Cũng giống như với các thư mục, kiểm tra xem tệp có tồn tại hay không bằng cách sử dụng file_exists() là một cách tuyệt vời để xử lý các lỗi do người dùng nhập vào. Bạn không muốn thử và xử lý một tệp không tồn tại hoặc không thể nằm trong thư mục được cung cấp

PHP Ghi đè tệp nếu nó tồn tại

Ví dụ này sẽ ghi đè lên một tệp nếu nó đã tồn tại trong thư mục được cung cấp. Hãy nhớ thay đổi /folder1/folder2/ thành thư mục thực trên hệ thống tệp của bạn và cập nhật "/" dựa trên hệ điều hành của bạn


$filename = '/folder1/folder2/test.txt';
if (file_exists($filename)) {
echo "The file $filename exists";
unlink($filename);
}else {
echo "The file $filename does not exist";
}

Nếu tệp văn bản ‘test. txt’ tồn tại trong thư mục được cung cấp, nó sẽ bị xóa và thay thế bằng một tệp văn bản trống mới. Bạn có thể đặt logic khác trong đoạn mã này để ghi vào tệp thay vì hủy liên kết () để xóa tệp

Trường hợp sử dụng File_Exists() thực

Các công cụ phần mềm PIM thường cần truy cập thông tin danh mục sản phẩm từ cơ sở dữ liệu nội bộ để tích hợp dữ liệu khách hàng vào bảng điều khiển công cụ phần mềm. Các tệp này thường có kích thước lớn và quy trình xử lý dữ liệu để kéo chúng vào hệ thống phần mềm cần có thời gian. Xem xét quá trình này có thể mất bao lâu, UX kém sẽ khiến người dùng phải đợi suốt thời gian để phát hiện ra hệ thống không có quyền truy cập vào các tệp được yêu cầu. Chức năng này là một cách nhanh chóng để cung cấp phản hồi UX rằng các tệp được yêu cầu không thể truy cập được và đó là những tệp nào.  

Ví dụ sâu hơn về hàm File_Exists()

Hãy xem xét một số cách mạnh mẽ và hiệu quả để sử dụng hàm file_exists()

Xác thực hình ảnh trước khi tải lên trong hệ thống tệp

Trong ví dụ “sâu hơn” đầu tiên này, chúng ta sẽ xem xét cách chúng ta có thể xác thực xem một hình ảnh có tồn tại hay không trước khi tải nó lên. Chúng tôi sẽ sử dụng hàm file_exists() cho tác vụ này.  


$target_file = "uploads/" . basename($_FILES["fileToUpload"]["name"]);
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}

Chúng tôi sử dụng hàm file_exists() để kiểm tra xem tệp đã tồn tại trong thư mục "uploads" của chúng tôi chưa. Nếu có, chúng tôi lặp lại "Xin lỗi, tệp đã tồn tại. " và đặt $uploadOk thành 0

Tệp PHP tồn tại với đường dẫn tương đối

Đây là cách chúng ta có thể sử dụng file_exists() để kiểm tra xem tệp văn bản có tồn tại hay không khi được cung cấp một đường dẫn tương đối.  


$filename = '../file.txt';
if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}

Điều này đặc biệt hữu ích cho các ứng dụng lớn hơn, nơi bạn có thể muốn giữ đường dẫn của mình tương đối vì lý do di động. Các ứng dụng dựa trên đám mây xuất hiện trong tâm trí bạn có thể có các máy chủ khác nhau với các hệ thống tệp khác nhau

Kiểm tra xem tệp từ xa có tồn tại trước khi hủy liên kết không

Ngoài việc kiểm tra xem tệp có tồn tại trên máy chủ cục bộ trong một đường dẫn được chỉ định hay không, chúng tôi có thể cần kiểm tra xem tệp từ xa có tồn tại hay không trước khi chúng tôi quyết định xóa tệp đó

 


if(file_exists($_SERVER['DOCUMENT_ROOT']."/folder/test.txt")) { 
//Delete remote txt file
unlink($_SERVER['DOCUMENT_ROOT']."/folder/test.txt"); 
}
// No operation if file does not exist. This is often seen as poor UX in a production setting

 

Ở đây chúng tôi đang kiểm tra xem logo. png tồn tại trong $_SERVER['DOCUMENT_ROOT']. "/thư mục/kiểm tra. txt" vị trí. Nếu có, chúng ta sử dụng hàm unlink() để xóa tệp. Chúng tôi cũng có thể sử dụng hàm unlink() trên các loại tệp khác được triển khai trong cài đặt từ xa

 

php file_exists so với is_file

 

Sự khác biệt chính giữa file_exists và is_file là

file_exists cũng có thể kiểm tra xem thư mục có tồn tại hay không trong khi is_file chỉ có thể kiểm tra xem tệp có tồn tại hay không

file_exists nhanh hơn is_file khi được sử dụng để kiểm tra xem có tồn tại một số lượng lớn tệp hay không. Nói chung, is_file chỉ nên được sử dụng nếu điều thực sự quan trọng là phải biết liệu một đường dẫn đã cho có phải là một tệp thông thường hay không

Bản tóm tắt

File_Exists() là một cách tuyệt vời để kiểm tra xem một tệp đã cho có tồn tại hay không trước khi thử thực hiện các thao tác trên tệp đó. Chức năng này có thể giúp chúng tôi tiết kiệm thời gian và tài nguyên bằng cách cho chúng tôi biết liệu chúng tôi có thể tiếp tục với các thao tác tệp hay không. Chức năng này cũng rất tốt cho mục đích bảo mật vì chúng tôi có thể kiểm tra xem một số tệp nhạy cảm có tồn tại hay không trước khi cho phép người dùng truy cập vào các tệp không tồn tại

Hàm Is_file trong PHP là gì?

Hàm is_file() trong PHP là hàm có sẵn 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à tệp thông thường, ngược lại nó trả về Sai.

Làm cách nào để bạn xác định xem một đường dẫn đã cho có phải là một tệp trong PHP không?

Hàm is_dir() trong PHP 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.

Tệp có chức năng trong PHP không?

Hàm PHP fopen() . “$file_name” là tên file cần mở. “$mode” là chế độ mở tệp, bảng bên dưới hiển thị các chế độ. “fopen” is the PHP open file function. “$file_name” is the name of the file to be opened. “$mode” is the mode in which the file should be opened, the table below shows the modes.

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 chưa, nghĩa là biến đó phải được khai báo và không phải là NULL . Hàm này trả về true nếu biến tồn tại và không phải là NULL, ngược lại trả về false.