PHP检查符号链接文件的年龄

时间:2015-12-29 13:28:58

标签: php symlink

我有一个下载脚本,它使用symlink()创建指向文件的链接。我尝试创建一个脚本,以便在1小时后删除链接。但是,当我尝试检查文件与filemtime()的年龄时,我只得到实际原始(目标)文件的修改时间而不是符号链接。

这是我目前的代码:

$filename = '/var/www/html/files/myfile.rar';

if (file_exists($filename)) {
    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}

如何检查实际符号链接的上次修改时间而不是文件?

3 个答案:

答案 0 :(得分:2)

使用PHP函数lstat()

$stat = lstat('/var/www/html/files/myfile.rar');
print_r($stat);

为您提供大量信息,如atime(上次访问),ctime(创建时间)和mtime(上次修改)。

答案 1 :(得分:2)

正确,filemtime()stat()将遵循符号链接,但lstat()不会。

  

此函数与stat()函数相同,只是如果filename参数是符号链接,则返回符号链接的状态,而不是符号链接指向的文件的状态。

例如:

<?php

function getSymlinkMtime($symlinkPath)
{
    $stat = lstat($symlinkPath);

    return isset($stat['mtime']) ? $stat['mtime'] : null;
}
可以使用

代替filemtime()

在这种方法中,你的完整例子是:

<?php

$filename = '/var/www/html/files/myfile.rar';

if (file_exists($filename)) {
    echo "$filename was last modified: " . date ("F d Y H:i:s.", getSymlinkMtime($filename));
}

答案 2 :(得分:-3)

可能,你无法获得符号链接的属性。您可以创建文件,您可以在其中存储有关链接的信息。