このコードを実行すると、「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を使用し、システムクロックを特定のタイムゾーンに設定します。
最終的に3つの異なるタイムゾーンになりますが、完全に透過的である必要があります。
問題は、システムのタイムゾーンが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
使用する特定の日付方法に応じて、目的の出力を決定できます。