Hàm is_readable() trong PHP
Trần Thị Vân
- 1319
- 11/08/2025
Chức năng của Hàm is_readable() trong PHP
Hàm is_readable() trong PHP dùng để kiểm tra một tệp có tồn tại hay không và có quyền đọc file hay không, nếu có trả về true, ngược lại trả về false.
Cú pháp của Hàm is_readable() trong PHP
$kết_quả = is_readable("đường_dẫn_đến_file");
đường_dẫn_đến_file: Đường dẫn đến file.
$kết_quả: Kết quả trả về true nếu file tồn tại và có quyền đọc file, trả về false nếu file không tồn tại hoặc file không có quyền đọc.
Code Hàm is_readable() trong PHP
<?php
// Đường dẫn tới file
$filenguon = "thumuctest/test.txt";
// Kiểm tra Tệp này có tồn tại và có quyền đọc file hay không
if(is_readable($filenguon)){
echo "Tệp này tồn tại và có quyền đọc file";
}else{
echo "Tệp này không đọc được";
}
// Kết quả: Tệp này tồn tại và có quyền đọc file
?>
Kết quả:
Tệp này tồn tại và đọc được
Cách xử lý khi is_readable() trả về false trong PHP
Khi is_readable() trả về false, điều đó không đơn giản chỉ có nghĩa là tệp không tồn tại. PHP có thể không đọc được tệp vì đường dẫn sai, tệp không còn tồn tại, quyền truy cập bị giới hạn hoặc tiến trình chạy PHP không có quyền đọc tài nguyên đó.
Thay vì chỉ kiểm tra kết quả rồi bỏ qua, nên xác định nguyên nhân cụ thể trước khi tiếp tục xử lý tệp. Cách này giúp tránh lỗi khi đọc dữ liệu và đặc biệt hữu ích với các ứng dụng chạy trên máy chủ Linux.
Kiểm tra đường dẫn tệp trước khi sử dụng is_readable()
Đường dẫn là nguyên nhân dễ gặp nhất khiến is_readable() trả về false. Một đường dẫn tương đối có thể được tính từ thư mục làm việc hiện tại của PHP chứ không phải vị trí của tệp PHP đang thực thi.
Nếu tệp nằm trong cùng dự án, nên xây dựng đường dẫn rõ ràng thay vì phụ thuộc quá nhiều vào đường dẫn tương đối. Có thể kết hợp __DIR__ với tên tệp để giảm khả năng sai vị trí.
<?php
$file = __DIR__ . '/data/example.txt';
if (is_readable($file)) {
echo 'Tệp có thể đọc được';
} else {
echo 'Không thể đọc tệp';
}
?>
Cách này đặc biệt hữu ích khi mã nguồn được chạy từ nhiều thư mục hoặc được gọi thông qua các tệp PHP khác nhau. Nếu cần kiểm tra nguyên nhân, có thể dùng thêm file_exists() để phân biệt trường hợp đường dẫn không trỏ tới tệp tồn tại.
Kiểm tra quyền đọc của tệp trên máy chủ
Nếu đường dẫn chính xác và tệp thực sự tồn tại nhưng is_readable() vẫn trả về false, cần kiểm tra quyền truy cập. PHP phải chạy dưới một tài khoản có đủ quyền đọc tệp thì hàm mới có thể xác nhận tài nguyên là có thể đọc.
Trên máy chủ Linux, quyền của tệp và các thư mục cha đều có thể ảnh hưởng đến khả năng truy cập. Vì vậy, chỉ nhìn vào quyền của riêng tệp chưa chắc đã tìm ra nguyên nhân.
Không nên cấp quyền quá rộng chỉ để làm cho is_readable() trả về true. Thay vào đó, nên cấp quyền đọc phù hợp cho tài khoản hoặc nhóm mà máy chủ web sử dụng.
Xử lý trường hợp tệp không tồn tại hoặc không thể truy cập
Ứng dụng nên chuẩn bị cho trường hợp tệp bị xóa, di chuyển, đổi tên hoặc không còn khả dụng tại thời điểm kiểm tra. Với dữ liệu quan trọng, không nên giả định rằng một đường dẫn hợp lệ luôn tồn tại.
Có thể kiểm tra sự tồn tại trước rồi mới xác định khả năng đọc để đưa ra thông báo phù hợp:
<?php
$file = __DIR__ . '/data/example.txt';
if (!file_exists($file)) {
echo 'Tệp không tồn tại';
} elseif (!is_readable($file)) {
echo 'Tệp tồn tại nhưng không thể đọc';
} else {
echo 'Tệp sẵn sàng để đọc';
}
?>
Cách phân biệt này giúp việc xử lý lỗi rõ ràng hơn. Người phát triển có thể biết vấn đề nằm ở đường dẫn hay quyền truy cập thay vì chỉ nhận một kết quả false chung chung.
Phân biệt is_readable() với is_file() khi kiểm tra tệp
is_file() và is_readable() kiểm tra hai điều kiện khác nhau. is_file() xác định đường dẫn có trỏ đến một tệp thông thường hay không, trong khi is_readable() tập trung vào khả năng đọc tài nguyên.
Vì vậy, một đường dẫn có thể thỏa điều kiện của is_file() nhưng vẫn không thỏa điều kiện của is_readable() nếu PHP không có quyền đọc.
<?php
$file = __DIR__ . '/data/example.txt';
if (is_file($file) && is_readable($file)) {
echo 'Tệp tồn tại và có thể đọc';
} else {
echo 'Tệp không đáp ứng điều kiện đọc';
}
?>
Hai hàm có thể được sử dụng cùng nhau khi chương trình cần chắc chắn rằng đường dẫn vừa là tệp thực sự vừa có thể được PHP truy cập để đọc. Đây là cách kiểm tra phù hợp trước các thao tác tiếp theo như mở hoặc lấy nội dung tệp.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm is_readable() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *