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を使用し、システムクロックを特定のタイムゾーンに設定します。

最終的に3つの異なるタイムゾーンになりますが、完全に透過的である必要があります。

問題は、システムのタイムゾーンが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 に答える