我有一个下载脚本,它使用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));
}
如何检查实际符号链接的上次修改时间而不是文件?
答案 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)
可能,你无法获得符号链接的属性。您可以创建文件,您可以在其中存储有关链接的信息。