【发布时间】:2016-10-21 19:35:27
【问题描述】:
我正在构建一个 cron 作业,它扫描图像目录并调整超过 800 像素宽的任何内容。如果那天上传了图像,我也只希望它进入调整大小,所以我尝试使用 filemtime() 但我一直得到 1969-12-31 回来。
我已经阅读了我能找到的关于该问题的所有论坛帖子,但似乎没有任何效果。我已经在我的本地 WIN 10 机器(使用 xammplite)和我的生产 Linux 机器上对其进行了测试。两者都使用 PHP 5.3 或更高版本,我得到完全相同的结果。
这是一个代码 sn-p 以及我添加的回声以查看发生了什么:
$files = scandir($_SERVER['DOCUMENT_ROOT'] . '/forum_functions/image_uploads');
$check_date = date('Y-m-d', strtotime('now'));
echo 'check date is ' . $check_date . '<br>';
foreach ($files as $file) {
if ($file != '.' && $file != '..') {
echo 'file date is ' . date('Y-m-d', strtotime(filemtime($_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}"))) . '<br>';
echo 'file is ' . $_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}" . '<br>';
echo 'file exists ' . file_exists($_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}") . '<br>';
if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}") && $check_date == date('Y-m-d', strtotime(filemtime($_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}")))) {
// do resizing
}
}
}
foreach 循环中的第一个回显为所有图像打印 1969-12-31
foreach 中的第二个 echo 正确打印了路径
第三次回显文件存在返回true,但由于日期错误,未能进入if条件。
我检查了日志中的警告,但没有,我检查了文件夹权限,它们都很好。
我刚刚收到了!也许我的眼睛错过了什么,或者发生了一些我不知道的事情,所以我真的可以使用一些建议。
【问题讨论】:
-
如果你改用这段代码会怎样:
date ("F d Y H:i:s.", filemtime($_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}"));