2

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

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

它会在未来 1 小时内保存文件。那么它在哪里得到时间呢?

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

4

3 回答 3

1

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

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

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

您的问题可能是由于您的系统时区与您的php时区不同。

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

根据您的需要,您将不得不根据您的系统时区更改您的 PHP 时区,或者转换您的时间戳日期来管理您的文件。

除非您有充分的理由这样做,否则我建议您使用系统时区调整您的 php 时区。

于 2012-09-20T09:26:06.650 回答
0

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

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

于 2012-09-20T09:24:11.263 回答
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

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

于 2012-09-20T09:31:47.890 回答