3

Cakeで奇妙な問題が発生しました。私はドイツに住んでいます。投稿を追加すると、「作成された」データベースフィールドの時間が6時間前になります。たとえば、午後6時に作成された投稿は、午前12時に作成されたものとしてデータベースに表示されます。管理対象サーバーを使用しており、php.iniを正しいタイムゾーンEurope/Berlinに設定している会社に連絡しました。サーバーphp.iniをリクエストすると、タイムゾーン「Europe/Berlin」が正しく表示されます。しかし、コードを実行すると

$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;

CakePHPではそれは示しています

The current server timezone is: America/New_York

私はすでにcore.phpで設定しようとしました:

date_default_timezone_set('Europe/Berlin');

しかし、それはまったく効果がありません。うまくいけば、誰かが何をすべきか知っています。

編集1:

「locale-a」を実行するようにサポートに依頼した後、次のように吐き出されました。

# locale -a
C
de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
deutsch
en_US.utf8
german
POSIX

サーバーサイドはすべて問題なく、エラーは簡単だと思います。しかし、私は次に何をすべきかについての手がかりがありませんか?多分誰かが助けることができます。前もって感謝します。

**編集2:**

何が考えられるかを調べた後、Usermanagement-pluginのbootstrap.phpにエラーが見つかりました。これにより、タイムゾーンがUTCに設定されました。したがって、すべてが正常に機能するようになりました。とにかくあなたの助けをありがとう。

4

3 に答える 3

5

編集:

以下の回答を行っても効果がない場合(OPごと)、次の問題である可能性があります。

スクリプトを実行しているサーバーにドイツ語ロケールがインストールされていない可能性が非常に高いです-サーバーへのシェルアクセスがありますか?次に、試してください

ロケール-a

インストールされているロケールを確認します。ここもご覧くださいsetlocaleに依存し、インストールされているロケールに依存することは可能ですか?


TLDR:

あなたは正しい考えを持っていました-それをあなたの中に入れてくださいConfig/bootstrap.php。あなたの代わりにConfig/core.php.

より詳しく:

これはおそらくこの質問と同じです。それは答えです:

これをConfig/bootstrap.phpに入れます。

date_default_timezone_set('UTC'); //またはタイムゾーンが何であれ

これはサーバーの時間に基づいており、CakePHPとは実際には何の関係もありません。したがって、PHPでデフォルトのタイムゾーンを変更するだけで、準備は完了です。「作成済み」および「変更済み」は、指定されたタイムゾーンに基づきます。

繰り返しになりますが、「」フィールドcreatedと「modified」フィールドはサーバーに基づいており、CakePHPとはあまり関係がありません(すでに正しく想定しているように聞こえます)。

関連する項目(読み進めるためにちょうどfyi)はCakeTime :: convert()ですが、この場合、あなたが望むものではありません。

于 2013-02-25T18:01:30.677 に答える
0

code.phpではなくapp_controllerに設定する

于 2013-02-25T18:01:48.217 に答える
0

問題が解決しました。問題は、config.php もあるプラグインにありました。そこで Cake-config が上書きされました。今、すべてが順調です。

于 2013-04-20T12:46:44.587 に答える