Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 文件\u放置\u内容创建时间戳错误的文件_Php_Date_Time_Timezone - Fatal编程技术网

Php 文件\u放置\u内容创建时间戳错误的文件

Php 文件\u放置\u内容创建时间戳错误的文件,php,date,time,timezone,Php,Date,Time,Timezone,运行此代码时,我遇到了“文件内容”问题: file_put_contents("/var/www/html/storage/views/temp", "helllo world"); 它将在未来1小时内保存文件。 那么时间是从哪里来的呢 我已经设置了php.ini date.timezone=“Europe/London”(根据系统时区),这似乎没有帮助文件\u put\u内容为文件提供了服务器时间。这意味着,在查看文件的时间戳时,必须考虑服务器的时区,并且必须最终转换为客户端的时区 在我的l

运行此代码时,我遇到了“文件内容”问题:

file_put_contents("/var/www/html/storage/views/temp", "helllo world");
它将在未来1小时内保存文件。 那么时间是从哪里来的呢


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

文件\u put\u内容为文件提供了服务器时间。这意味着,在查看文件的时间戳时,必须考虑服务器的时区,并且必须最终转换为客户端的时区


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

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

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

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

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

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

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


除了你有很好的理由这样做之外,我建议你用你的系统时区来调整你的php时区。

当你使用它时,你需要正确地处理时间戳值。检查这一点:

<?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");

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

时区在php中与机器时间无关。您的文件时间基于系统时间。可能我们在BST上,您在winscp中设置了GMTgot it已知错误。我宁愿避免在日期上手动转换,因为这可能会导致混乱,最好是使用本机php函数。确定日期+%Z返回BST,所以我运行了“TZ='Europe/London';导出TZ”重新运行date+%Z,并注意给出正确的时间。因此,如果我“文件内容”(/var/www/html/storage/views/temp),date('l jS\of F Y h:i:sa');”将正确的时间写入文件,但文件创建时间为1小时。正如我所说,PHP日期与系统日期无关。关于你的时区改变尝试,你不能像这样改变时区,你可以看看那里:知道怎么做。完成了没有改变…:(但注意到putty报告的时间与winscp不同..我怀疑下载文件可能会修改时间戳和/或将时区强制转换为桌面时区。请改为在服务器上本地尝试。请注意,如果运行VPS,则可能无法更改硬件时钟。2012-09-20 10:42:31 GMT 2012-09-20 11:42:31 BST和fi创建时间=2012-09-20 12:42:31(由winscp报告)
2012-09-20 09:29:17 GMT 
2012-09-20 11:29:17 CEST