运行此代码时,我遇到“file_put_contents”问题:
file_put_contents("/var/www/html/storage/views/temp", "helllo world");
将来1小时保存文件。 那么在哪里给它时间?
我设置了php.ini date.timezone =“Europe / London”(根据系统时区),这似乎没有帮助
答案 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
根据您使用的具体日期方法,您可以确定所需的输出。