我正在创建一个WordPress插件,可以在某些服务器上看到,对于某些文件, stat
(要么 filemtime
)返回无效 修改时间 值。在某些情况下,它是负值或非常大的值(超过30亿)。
在FTP中,我可以看到时间戳是正确的。
我正在创建一个WordPress插件,可以在某些服务器上看到,对于某些文件, stat
(要么 filemtime
)返回无效 修改时间 值。在某些情况下,它是负值或非常大的值(超过30亿)。
在FTP中,我可以看到时间戳是正确的。
当您在任何PHP时间戳中获得负数时,它只是Unix Epoch之前的秒数,并且不限于此 filemtime
例A
echo strtotime("1950-1-1"); // Outputs -631155600
^------- negative value
例B
输出负值并不意味着如果您尝试,则无法正确格式化
echo date("Y-m-d",-631155600); // Output 1950-01-01
最后
FTP I can see that the timestamp is correct though
您的FTP应用程序绝对不是PHP并且有自己的内部日期系统..其日期系统可能不会在时间戳中使用负值
如果我理解正确的话,你正在寻找一个非常大的值 - 这是一个Unix时间戳。
你尝试过这样的事吗?
date ("F d Y H:i:s.", filemtime($filename))
filemtime
返回自1970年1月1日以来经过的秒数,这应该是一个非常大的值;你可以使用类似上面的例子将这些秒转换成人类可读的东西。
另一方面,如果你意识到这一点并且你认为你的大价值仍然是错误的,那么发布一个所述价值的例子以及你期望它的日期可能会有所帮助。
当您的服务器运行ntp守护程序时,这可能是在请求中设置时间的结果。这发生在e.x.对于apache日志和其他依赖于unix系统功能的东西。
filemtime返回负值的文件大小是多少?
它在这里说: http://php.net/manual/en/function.stat.php “由于PHP的整数类型已签名且许多平台使用32位整数,因此某些文件系统函数可能会为大于2GB的文件返回意外结果。”
unix时间戳的当前值约为1,356,197,722,因此十亿是合理的。
虽然这不太可能成为问题,但值得了解 http://php.net/manual/en/function.clearstatcache.php 并在调用filemtime()之前使用它。