Hàm chmod() trong PHP dùng để làm gì?

29/06/2020 - lượt xem
Chia sẻ
 
Rate this post

Định Nghĩa.

Hàm chmod() sẽ thay đổi quyền đối với các đối tượng người dùng của file được truyền vào.
Hàm tương thích trên PHP4, PHP5, PHP7.

Cú pháp.

Cú pháp:

chmod ( string $filename , int $mode ) : bool

Trong đó.

  • $filename là đường dẫn đến file.
  • $mode là quyền mới đối với các đối tượng người dùng.
    – Lưu ý rằng mode không tự động được coi là một octal value, vì vậy để đảm bảo hoạt động dự kiến, bạn cần phải có chế độ tiền tố với số không (0). Các chuỗi như “g + w” sẽ không hoạt động đúng.

    <?php
    chmod("/somedir/somefile", 755);   // decimal; probably incorrect
    chmod("/somedir/somefile", "u+rwx,go+rx"); // Chuỗi sai
    chmod("/somedir/somefile", 0755);  // Giá trị đúng của chế độ
    ?>

    – Tham số chế độ bao gồm ba thành phần số octal chỉ định các hạn chế truy cập cho chủ sở hữu, nhóm người dùng mà chủ sở hữu đang ở và cho mọi người khác theo thứ tự này. Một thành phần có thể được tính bằng cách thêm các quyền cần thiết cho cơ sở người dùng file đó. Số 1 có nghĩa là bạn cấp quyền thực thi, số 2 có nghĩa là bạn tạo tệp có thể ghi, số 4 có nghĩa là bạn làm cho tệp có thể đọc được. Thêm các số này để xác định các quyền cần thiết. Bạn cũng có thể đọc thêm về các chế độ trên các hệ thống Unix với ‘man 1 chmod’ và ‘man 2 chmod’.

    <?php 
    // chủ file được quyền đọc và viết, mọi người khác không có quyền.
    chmod("/somedir/somefile", 0600);
     
    // chủ file được quyền đọc và viết, mọi người khác có quyền đọc.
    chmod("/somedir/somefile", 0644);
     
    // chủ file có mọi quyền, mọi người có quyền đọc và thực thi.
    chmod("/somedir/somefile", 0755);
     
    // chủ file có mọi quyền, mọi người cùng nhóm với chủ file có quyền đọc
    và thực thi, người khác không có quyền
    chmod("/somedir/somefile", 0750);
    ?>

Giá trị trả về.

  • Trả về TRUE khi thành công hoặc FALSE khi thất bại.

Chú ý.

  • Người dùng hiện tại là người dùng mà PHP chạy. Nó có thể không giống với người dùng bạn sử dụng để truy cập shell hoặc FTP thông thường. Chế độ chỉ có thể được thay đổi bởi người dùng sở hữu tệp trên hầu hết các hệ thống.
  • Chức năng này sẽ không hoạt động trên các tệp từ xa vì tệp cần kiểm tra phải được truy cập thông qua hệ thống tệp của máy chủ.
  • Khi chế độ an toàn được bật, PHP sẽ kiểm tra xem các tệp hoặc thư mục bạn sắp vận hành có cùng UID (chủ sở hữu) như tập lệnh đang được thực thi hay không. Ngoài ra, bạn không thể đặt SUID, SGID và bit dính.

Hàm liên quan

  • chown() – Thay đổi chủ sở hữu tập tin
  • chgrp() – Thay đổi nhóm người dùng với tập tin
  • fileperms() – Nhận quyền truy cập của tệp.
  • stat() – Cung cấp thông tin về một tập tin

Thông tin thêm.

 

  • Khi sử dụng dấu ngoặc kép xung quanh tham số thứ hai vd chmod (tập tin, “0644”);
    PHP sẽ không quan tâm tới điều đó nhưng sẽ thực hiện chuyển đổi ngầm thành int trước khi chạy chmod. Thật không may, chuyển đổi ngầm định không tính đến chuỗi bát phân để bạn kết thúc với phiên bản số nguyên 644, là 1204 octal.
  • Một cách để thay đổi mode recursive  trong $ pathname thành $ filemode.

    <?php
    
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname));
    
    foreach($iterator as $item) {
        chmod($item, $filemode);
    }
    
    ?>

 

Các bạn có thể xem chi tiết hơn trên php.net.

Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm chmod() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé.
Cảm ơn các bạn đã ghé thăm codetutam.com

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm