cakephp2.2 Model createdのtimezoneがUTCになる

Share on Facebook0Share on Google+0Tweet about this on TwitterShare on LinkedIn0

Timezone+9

 

なぜか cakephp上では変な時間(UTC)になってしまう時の対策。

core.phpのtimezoneの設定を確認。

/**
* Uncomment this line and correct your server timezone to fix
* any date & time related errors.
*/

    //date_default_timezone_set('UTC');

timezoneの設定はコメントアウトされてる。

コメントにちゃんと書いて有りますな。

ここのコメント外してあんたのサーバーに合わせた設定にしなさいよと。

言われたとおりに

    date_default_timezone_set('Asia/Tokyo');

Asia/Tokyo に変えて解決。

…と普通ならここで解決するはずが、うちでは全く解決しない。

普段は大丈夫やのにController内で自作Componentを使おうとするとなぜかtimezoneがUTCになってしまう。

とにかく原因究明のために色んなとこでtimezoneがどうなってるのかを調査してみることに。

class FooController extends AppController {

    public $components = array(
        'Foo',
    );
/**
* beforeFilter
*
* @var mixed
*/

    public function beforeFilter() {
        var_dump(date('e'));
    }
/**
* index method
*
* @return void
*/

    public function index() {
        var_dump(date('e'));
    }
}

どの段階で変わってるのか見るために beforeFilter と index で timezoneをdumpしてみる。

結果 beforeFilter は Asia/Tokyo

index は UTC になってた。

んで public $components を削除してみると今度はちゃんと両方 Asia/Tokyo に。

 

これで Component が悪さしてるのは間違いない。

 

でも timezone の変更なんかしてへんぞーと更に調査を進めると…見つかりました。

PHP で Twitter API や OAuth 認証を行うためのライブラリ 「tmhOAuth」のコンストラクタ内で

    // default configuration options
    $this->config = array_merge(
        array(
            //略
            // default timezone for requests
            'timezone' => 'UTC',
            //略
        ),
        $config
    );
    date_default_timezone_set($this->config['timezone']);

こんなのが!

思いっきりUTCにセットしちゃってるYO!

configはnewする時に上書き出来るので

$tmhOAuth = new tmhOAuth(
    'consumer_key' => '******************',
    'consumer_secret' => '*********************',
    'timezone' => 'Asia/Tokyo',
);

こんな感じにセットしてやって解決。

cakephpのソースまで追っかけてた努力は何だったんだ(ノД`)

Share on Facebook0Share on Google+0Tweet about this on TwitterShare on LinkedIn0

あわせて読みたい

Fatal error: Uncaught Exception: 12: REST API is deprecated for versions v2.1 and higher (12) thrown in /var/www/junkpot.net/tech/html/wp-content/plugins/seo-facebook-comments/facebook/base_facebook.php on line 1273