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

04/08/2020 - lượt xem
Chia sẻ
 
Rate this post

Định nghĩa.

Hàm is_writable() sẽ kiểm tra xem file truyền vào có quyền ghi hay không.

Cú pháp.

Cú pháp:

is_writable ( string $filename ) : bool

Trong đó.

  • $filename là đường dẫn tới file cần kiểm tra.

Giá trị trả về.

  • Hàm sẽ trả về True nếu file tồn tại và có quyền ghi, ngược lại hàm sẽ trả về Fasle..

Ví dụ.

Ví dụ 1.

code.

<?php
$filename = 'test.txt';
if (is_writable($filename)) {
    echo 'File có thể được ghi';
} else {
    echo 'File không thể được ghi';
}
?>

Ghi chú.

  • Hãy nhớ rằng PHP có thể đang truy cập tệp dưới dạng id người dùng mà máy chủ web chạy dưới dạng (thường là ‘không ai’). Các giới hạn chế độ an toàn không được tính đến trước PHP 5.1.5.
  • Kết quả của chức năng này được lưu trữ. Xem Clearstatcache () để biết thêm chi tiết.
  • Kể từ phiên bản PHP 5.0.0, chức năng này cũng có thể được sử dụng với một số Supported Protocols and Wrappers. Tham khảo các Giao thức và Trình bao bọc được Hỗ trợ để xác định nhóm chức năng hỗ trợ stat() nào.

Hàm liên quan.

  • is_readable() – Cho biết file có được phép đọc hay không.
  • file_exists() – Kiểm tra file hay thư mục có tồn taij hay không
  • fwrite() – ghi file dạng Binary-safe

Thông tin thêm.

  • Cảnh báo, đó là trả về is_writable cho các tệp không tồn tại, mặc dù chúng có thể được ghi vào đường dẫn truy vấn.
  • Kiểm tra director  là  writable recursively. để trả về true, tất cả nội dung thư mục phải ghi được
    <?php
    function is_writable_r($dir) {
        if (is_dir($dir)) {
            if(is_writable($dir)){
                $objects scandir($dir);
                foreach ($objects as $object) {
                    if ($object != "." && $object != "..") {
                        if (!is_writable_r($dir."/".$object)) return false;
                        else continue;
                    }
                }   
                return true;   
            }else{
                return false;
            }
           
        }else if(file_exists($dir)){
            return (is_writable($dir));
           
        }
    }
    
    ?>
  • Về việc bạn có thể nhận ra các tệp của mình trên web bị các tập lệnh PHP của bạn tạo thành nhóm NOBODY, bạn có thể tránh sự cố này bằng cách thiết lập Kết nối FTP (“ftp_connect”, “ftp_raw”, v.v.) và sử dụng các phương thức như “ftp_fput” để tạo các [thay vì đưa ra các quyền để bạn có thể sử dụng cách “không an toàn” thông thường]. Điều này sẽ cung cấp cho các tệp được tạo không phải là NHÓM NOBODY – nó cũng sẽ cung cấp cho NHÓM Kết nối FTP của bạn thông qua việc sử dụng Chương trình FTP của bạn.
  • Hàm file_write () này sẽ cấp cho $ filename quyền ghi trước khi ghi $ nội dung vào nó.Lưu ý rằng nhiều máy chủ không cho phép người dùng PHP thay đổi quyền truy cập tệp.
    <?php
        function file_write($filename, &$content) {
            if (!is_writable($filename)) {
                if (!chmod($filename, 0666)) {
                     echo "Cannot change the mode of file ($filename)";
                     exit;
                };
            }
            if (!$fp = @fopen($filename, "w")) {
                echo "Cannot open file ($filename)";
                exit;
            }
            if (fwrite($fp, $content) === FALSE) {
                echo "Cannot write to file ($filename)";
                exit;
            }
            if (!fclose($fp)) {
                echo "Cannot close file ($filename)";
                exit;
            }
        }
    ?>

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 is_writable() 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