Hàm fileperms() trong PHP

Hàm fileperms() trong PHP
Hàm fileperms() trong PHP

Chức năng của Hàm fileperms() trong PHP

Hàm fileperms() trong PHP dùng để xem mức độ phân quyền của một tệp hoặc thư mục, hàm trả về giá trị số nguyên biểu thị các quyền đó, sau đó dùng hàm sprintf và substr để xem được mức độ phân quyền của file hoặc thư mục.

Cú pháp của Hàm fileperms() trong PHP

$kết_quả = fileperms("đường_dẫn_đến_file_hoặc_thư_mục");

đường_dẫn_đến_file_hoặc_thư_mục: Đường dẫn đến file hoặc thư mục.

$kết_quả: Kết quả trả về giá trị số nguyên biểu thị mức độ phân quyền hiện tại trên tệp hoặc thư mục.

Code Hàm fileperms() trong PHP

<?php
// Đường dẫn đến file
$filenguon = 'thumuctest/test.txt';

// Xem phân quyền hiện tại của tệp
echo substr(sprintf('%o', fileperms($filenguon)), -4);
echo "<br>";

// Đường dẫn đến thư mục
$thumuc = 'thumuctest';
// Xem phân quyền hiện tại của thư mục
echo substr(sprintf('%o', fileperms($thumuc)), -4);
?>

Kết quả:

0755
0755

Cách đọc kết quả phân quyền khi dùng fileperms() trong PHP

Kết quả trả về từ fileperms() không chỉ là một con số đơn thuần. Giá trị này chứa thông tin về quyền truy cập và loại đối tượng mà PHP đang kiểm tra. Muốn sử dụng kết quả chính xác, cần biết cách tách và diễn giải từng phần thay vì chỉ nhìn vào một giá trị như 0755 hay 0644.

Ý nghĩa các chữ số trong giá trị phân quyền

Phần quyền truy cập thường được quan tâm nhất nằm ở ba nhóm cuối của giá trị trả về, tương ứng với chủ sở hữu, nhóm người dùngnhững người dùng khác. Mỗi nhóm có thể có quyền đọc, ghi hoặc thực thi.

Ba quyền cơ bản được biểu diễn bằng các giá trị:

  • Đọc (r): cho phép xem nội dung.
  • Ghi (w): cho phép thay đổi nội dung.
  • Thực thi (x): cho phép thực thi tệp hoặc truy cập thư mục theo quyền của hệ thống.

Ví dụ, một tệp có quyền 0644 thường được hiểu là chủ sở hữu có quyền đọc và ghi, trong khi nhóm và những người dùng khác chỉ có quyền đọc. Với thư mục, cách hiểu quyền thực thi có thêm ý nghĩa liên quan đến khả năng truy cập bên trong thư mục.

Phân biệt quyền đọc, ghi và thực thi trên file và thư mục

Không nên áp dụng cách hiểu quyền trên tệp và thư mục hoàn toàn giống nhau. Với tệp, quyền đọc cho phép lấy nội dung, quyền ghi cho phép thay đổi nội dung và quyền thực thi liên quan đến khả năng chạy tệp khi hệ điều hành cho phép.

Đối với thư mục, quyền đọc liên quan đến khả năng xem danh sách mục bên trong, quyền ghi cho phép tạo hoặc xóa mục theo các điều kiện của hệ thống, còn quyền thực thi cho phép truy cập vào thư mục. Vì vậy, một thư mục có quyền ghi nhưng thiếu quyền thực thi vẫn có thể không hoạt động theo cách mà người quản trị mong muốn.

Khi kiểm tra kết quả của fileperms(), cần xác định đối tượng đang kiểm tra là tệp hay thư mục trước khi đưa ra kết luận về quyền truy cập. Điều này đặc biệt quan trọng với các chức năng tải tệp, ghi log, tạo thư mục hoặc lưu dữ liệu trên máy chủ.

Những lưu ý khi kiểm tra quyền truy cập bằng fileperms()

Giá trị từ fileperms() cần được xử lý cẩn thận vì nó chứa cả thông tin về loại đối tượng và các bit quyền. Nếu mục tiêu chỉ là lấy phần quyền để hiển thị hoặc so sánh, nên lọc phần cần thiết thay vì sử dụng nguyên giá trị trả về.

Ngoài ra, quyền hiển thị trên hệ thống không đồng nghĩa tuyệt đối với việc PHP chắc chắn có thể đọc hoặc ghi tệp. Quyền thực tế còn phụ thuộc vào tài khoản mà tiến trình PHP đang chạy, nhóm người dùng, cơ chế phân quyền của hệ điều hành và các lớp bảo vệ bổ sung trên máy chủ.

Do đó, fileperms() phù hợp để kiểm tra và phân tích trạng thái quyền, nhưng không nên xem kết quả của hàm là lời khẳng định duy nhất rằng một thao tác đọc hoặc ghi sẽ luôn thành công.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm fileperms() trong PHP.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Hàm fileperms() trong PHP
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 *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !