file_put_contents使用错误的时间戳创建文件

时间:2012-09-20 09:13:53

标签: php date time timezone

运行此代码时,我遇到“file_put_contents”问题:

file_put_contents("/var/www/html/storage/views/temp", "helllo world");

将来1小时保存文件。 那么在哪里给它时间?

我设置了php.ini date.timezone =“Europe / London”(根据系统时区),这似乎没有帮助

3 个答案:

答案 0 :(得分:1)

php.ini date.timezone选项指定PHP将在内部使用的时区。

大多数Unix / Linux系统使用UTC作为硬件,然后将系统时钟设置为给定时区。

你最终有三个不同的时区,但它应该是完全透明的。

您的系统时区与 php 时区不同,可能是您的问题所致。

要检查系统时区,您可以执行date +%Z

根据您的需要,您必须根据系统时区更改PHP时区,或者转换时间戳的日期以管理文件。

除了你有充分理由这样做,我建议你用你的系统时区调整你的php时区。

答案 1 :(得分:0)

file_put_contents为文件提供服务器时间。这意味着,在查看文件的时间戳时,必须考虑服务器的时区,并且最终必须将其转换为客户端的时区

在我的linux机器上,日期输出:Thu Sep 20 11:23:28 CEST 2012,也就是文件的时间戳。在CST时区时,您必须从时间戳减去7个小时才能在CST中获得创建时间。

答案 2 :(得分:0)

您需要在使用时正确处理时间戳值。检查一下:

<?php
$file = __DIR__ . '/test.dat';
file_put_contents($file, "hello world");
print(gmdate('Y-m-d H:i:s T', filectime($file)) . "\n");
print(date('Y-m-d H:i:s T', filectime($file)) . "\n");

输出:

2012-09-20 09:29:17 GMT 
2012-09-20 11:29:17 CEST

根据您使用的具体日期方法,您可以确定所需的输出。