PHP 检查符号链接文件的年龄
PHP Check how old a symlink file is
我有一个下载脚本,它使用 symlink()
创建一个 link 到一个文件。我正在尝试创建一个脚本来删除 link 1 小时后的内容。但是,当我尝试使用 filemtime()
检查文件的年龄时,我只得到实际原始(目标)文件的修改时间,而不是 symlink.
这是我当前的代码:
$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));
}
我应该怎么做才能检查实际 symlink 而不是文件的最后修改时间?
使用PHP函数lstat()
:
$stat = lstat('/var/www/html/files/myfile.rar');
print_r($stat);
为您提供大量信息,例如 atime(上次访问)、ctime(创建时间)和 mtime(上次修改)。
可能无法获取 symlink 的属性。您可以创建文件来存储有关 link 的信息。
正确,filemtime()
and stat()
will follow symlinks, but lstat()
不会。
This function is identical to the stat()
function except that if the filename parameter is a symbolic link, the status of the symbolic link is returned, not the status of the file pointed to by the symbolic link.
例如:
<?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));
}
我有一个下载脚本,它使用 symlink()
创建一个 link 到一个文件。我正在尝试创建一个脚本来删除 link 1 小时后的内容。但是,当我尝试使用 filemtime()
检查文件的年龄时,我只得到实际原始(目标)文件的修改时间,而不是 symlink.
这是我当前的代码:
$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));
}
我应该怎么做才能检查实际 symlink 而不是文件的最后修改时间?
使用PHP函数lstat()
:
$stat = lstat('/var/www/html/files/myfile.rar');
print_r($stat);
为您提供大量信息,例如 atime(上次访问)、ctime(创建时间)和 mtime(上次修改)。
可能无法获取 symlink 的属性。您可以创建文件来存储有关 link 的信息。
正确,filemtime()
and stat()
will follow symlinks, but lstat()
不会。
This function is identical to the
stat()
function except that if the filename parameter is a symbolic link, the status of the symbolic link is returned, not the status of the file pointed to by the symbolic link.
例如:
<?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));
}