Hàm tempnam() trong PHP

24/11/2020 - lượt xem
Chia sẻ
 
Rate this post

Định nghĩa.

Hàm tempnam() sẽ tạo file với tên file là duy nhất trong nằm thư mục truyền vào. Nếu thư mục không tồn tại, hàm tempnam() có thể tạo tệp tin vào thư mục tạm của hệ thống.

Cú pháp.

Cú pháp:

tempnam ( string $dir , string $prefix ) : string

Trong đó.

  • $dir là thư mục sẽ chứa file.
  • $prefix là tên file, hàm sẽ chỉ dụng 3 kí tự đầu tiên của $prefix để làm tiền tố của tên file được tạo.

Giá trị trả về.

  • Hàm sẽ trả về đường dẫn tới file vừa tạo nếu tạo file thành công. ngược lại hàm trả về False.

Ghi chú.

  • Lưu ý: Chỉ 63 ký tự đầu tiên của tiền tố được sử dụng. Windows thậm chí chỉ sử dụng ba ký tự đầu tiên của tiền tố.
  • Lưu ý: Nếu PHP không thể tạo một tệp trong tham số dir được chỉ định, nó sẽ trở về mặc định của hệ thống. Trên NTFS, điều này cũng xảy ra nếu dir được chỉ định chứa nhiều hơn 65534 tệp.

Changelog.

  • 5.3.0 Chức năng này hiện khả dụng trên nền tảng Windows (Vista, Server 2008 trở lên).

Ví dụ.

Ví dụ # 1.

code.

<?php
$tmpfname = tempnam("/tmp", "FOO");

$handle = fopen($tmpfname, "w");
fwrite($handle, "writing to tempfile");
fclose($handle);

// do here something

unlink($tmpfname);
?>

Hàm liên quan.

  • tmpfile() – Tạo một tệp tạm thời
  • sys_get_temp_dir() – Trả về đường dẫn thư mục được sử dụng cho các tệp tạm thời
  • unlink() – Xoá file

Thông tin thêm.

  • Hãy coi chừng việc sử dụng $ dir trống như một “trick” để tạo các tệp tạm thời trong thư mục tạm thời của hệ thống.
    <?php
    $tmpfname = tempnam('', 'FOO'); // not good
    ?>
    Nếu một hạn chế open_basedir có hiệu lực, thủ thuật sẽ không hoạt động. Bạn sẽ nhận được một thông báo cảnh báo như Cảnh báo: tempnam () [function.tempnam]: hạn chế open_basedir có hiệu lực. Tệp () không nằm trong (các) đường dẫn được phép: (/var/www/vhosts/example.com/httpdocs:/tmp).
    <?php
    $tmpfname = tempnam(sys_get_temp_dir(), 'FOO'); // good
    ?>
  • Xin lưu ý rằng hàm này có thể đưa ra thông báo trong PHP 7.1.0 trở lên. Đây là một bản sửa lỗi: https://bugs.php.net/bug.php?id=69489 Bạn có thể đặt address operator (@) để tắt thông báo:
    <?php
    
    if ($tmp = @tempnam() !== false) {
      // ...
    }
    ?>
    Hoặc bạn có thể thử đặt cài đặt “upload_tmp_dir” trong php.ini thành đường dẫn thư mục tạm thời trong hệ thống của bạn. Không chắc chắn, nếu cái cuối cùng ngăn các thông báo.
  • Lưu ý rằng tempnam trả về đường dẫn đầy đủ đến tệp tạm thời, không chỉ tên tệp.
  • Nếu bạn truy cập trang người dùng linux cho hàm C tempnam (3), bạn sẽ thấy ở cuối “Không bao giờ sử dụng hàm này. Thay vào đó, hãy sử dụng mkstemp (3)”. Nhưng hàm tempnam () của php không thực sự sử dụng tmpnam (3), vì vậy không có vấn đề gì (trong Linux, nó sẽ sử dụng mkstemp (3) nếu có).

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