运行此代码时,我遇到了“file_put_contents”问题:
file_put_contents("/var/www/html/storage/views/temp", "helllo world");
它会在未来 1 小时内保存文件。那么它在哪里得到时间呢?
我已经设置了 php.ini date.timezone = "Europe/London" (根据系统时区),这似乎没有帮助
php.ini
date.timezone
选项指定 PHP 将在内部使用哪个时区。
大多数 Unix/Linux 系统使用 UTC 作为硬件,然后将系统时钟设置为给定的时区。
你最终会得到三个不同的时区,但它应该是完全透明的。
您的问题可能是由于您的系统时区与您的php时区不同。
要检查您的系统时区,您可以执行date +%Z
根据您的需要,您将不得不根据您的系统时区更改您的 PHP 时区,或者转换您的时间戳日期来管理您的文件。
除非您有充分的理由这样做,否则我建议您使用系统时区调整您的 php 时区。
file_put_contents 为文件提供服务器时间。这意味着,在查看文件的时间戳时,必须考虑服务器的时区,并且最终必须将其转换为客户端的时区。
在我的 linux 机器上,日期输出:Thu Sep 20 11:23:28 CEST 2012
这也是文件的时间戳。在 CST 时区中,您必须从时间戳中减去 7 小时才能获得 CST 中的创建时间。
使用时,您需要正确处理时间戳值。检查这个:
<?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
根据您使用的特定日期方法,您可以确定所需的输出。