Hủy liên kết PHP nếu tồn tại

Tuy nhiên, nếu tệp không thể bị xóa thì nó sẽ trả về giá trị FALSE. Hơn nữa, một lỗi cảnh báo sẽ được bỏ qua bởi PHP

Ví dụ: nếu tệp không tồn tại, thì cảnh báo sau sẽ xảy ra

Cảnh báo. hủy liên kết [[tên tệp]]. Không có tệp hoặc thư mục như vậy trong /path/to/file trên dòng [số dòng]

Do đó, có lẽ nên kiểm tra xem tệp có tồn tại hay không trước khi bạn cố xóa nó

Sử dụng PHP để xóa một tập tin nếu nó tồn tại

Trong hầu hết các trường hợp, bạn sẽ muốn đảm bảo rằng một tệp thực sự tồn tại trước khi bạn cố gắng xóa nó. Rất may, điều này khá dễ thực hiện với hàm is_writable

//If the file exists and is writeable
if[is_writable[$filePath]]{
    //Delete the file
    $deleted = unlink[$filePath];
}

Trong ví dụ trên, mã của chúng tôi sẽ chỉ cố gắng xóa tệp nếu is_writable trả về giá trị TRUE

Kết quả là chúng ta có thể tránh mọi thông báo E_WARNING xấu

các vấn đề về hủy liên kết và quyền

Lý do chúng tôi sử dụng is_writable thay vì is_file là is_writable sẽ giúp bảo vệ khỏi các vấn đề về quyền

Điều này là do chức năng không chỉ kiểm tra xem tệp có tồn tại không. Nó cũng kiểm tra xem PHP có quyền ghi vào tệp không. Nếu PHP không có quyền ghi vào tệp thì nó sẽ không thể xóa nó

Nếu PHP không có quyền xóa tệp được đề cập, thông báo cảnh báo sau sẽ bị bỏ qua

Cảnh báo. hủy liên kết [[tên tệp]] [chức năng. hủy liên kết]. Quyền bị từ chối

Trong những trường hợp như thế này, bạn sẽ cần cấp cho PHP quyền truy cập ghi vào thư mục được đề cập. Tuy nhiên, điều đó nằm ngoài phạm vi của bài viết này

Xóa một tệp nếu nó cũ hơn X ngày

Nếu bạn chỉ muốn PHP xóa các tệp cũ hơn một ngày, v.v. , sau đó bạn có thể làm một cái gì đó như thế này

//Full path or relative path to the file that
//you want to delete
$filePath = 'file.txt';

//Get the last modified time of the file
$lastModified = filemtime[$filePath];

//Get the current timestamp
$now = time[];

//Calculate the number of seconds that have passed
//since the file was last modified.
$secondsSince = $now - $lastModified;

//There are 86400 seconds in a day.
$deleteAfter = 86400;

//If the file is older than a day
if[$secondsSince >= $deleteAfter]{
    if[is_writable[$filePath]]{
        unlink[$filePath];
    }
}

Trong đoạn mã PHP ở trên, chúng tôi đã nhận được ngày sửa đổi cuối cùng của tệp. Nếu 86400 giây đã trôi qua kể từ khi tệp được sửa đổi lần cuối, chúng tôi sẽ cố gắng xóa nó

Rõ ràng, bạn có thể thay đổi khoảng thời gian này để phù hợp với nhu cầu của riêng bạn. Ví dụ: nếu bạn muốn xóa tệp nếu nó cũ hơn một giờ, thì bạn sẽ thay đổi biến $deleteafter thành 3600

Hàm unlink[] trả về true nếu nó xóa tệp thành công hoặc false nếu ngược lại. Nếu $filename không tồn tại, hàm unlink[] cũng đưa ra cảnh báo và trả về

Chủ Đề