質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
タイムゾーン

タイムゾーンは地球の各地域ごとに定義されている標準時間です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

Q&A

解決済

3回答

4244閲覧

CodeIgniter(3.1.3)にてPHP.iniで設定したタイムゾーンが反映されない

kaito3desuyo

総合スコア143

タイムゾーン

タイムゾーンは地球の各地域ごとに定義されている標準時間です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

0グッド

0クリップ

投稿2017/03/04 10:16

###前提
ComposerでインストールしたCodeIgniter3.1.3(PHP5.6.21)で開発を行っています。
開発環境はPleiades All In One内のeclipse neon.2です。
https://rdlabo.jp/codeigniter-465.php
上記のサイトを参考にWordpressとCodeIgniterを併用しています。

###発生している問題
PHP.iniで設定したタイムゾーン設定がCodeIgniter上で反映されていないことが判明しました。

PHP

1echo date('Y-m-d H:i:s');

を実行すると、現在時刻の9時間前を出力します。
phpinfoではタイムゾーンは「Asia/Tokyo」と表示されており、PHP.iniの設定には問題はなく、
またCodeIgniterの外で作成したPHPの直書きファイルではきちんと東京時間で出力されます。

###試したこと
・CodeIgniterよりも上位のディレクトリ(ルートディレクトリ)にテストファイルを作成→きちんと東京時間で表示される
・PHP.iniのタイムゾーン設定(計3か所)を再確認の上Asia/Tokyoに書き換え→効果なし
・.htaccessにPHPのタイムゾーン設定を記入→効果なし
・CodeIgniterのindex.phpにdate_default_timezone_set('Asia/Tokyo')を記載→効果なし
・同config.phpにdate_default_timezone_set('Asia/Tokyo')→効果なし
・同autoload.phpに以下略→効果なし
・レンタルサーバーに試験的にアップロードして確認(PHP.iniは編集済み)→変化なし

###補足情報
Pleiades All In One同梱XAMPPのバージョンは5.6.21
Pleiades All In One同梱Apacheバージョンは2.4.17

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

自己解決できました。
結論としては、CI_Controllerクラスをオーバーライドして
Wordpressのコアファイルを読み込んでいたのが原因のようで、
オーバーライド用のMY_Controller.phpに

PHP

1class MY_Controller extends CI_Controller{ 2 public function __construct() 3 { 4 parent::__construct(); 5 include dirname(__FILE__)."/../../wordpress/wp-load.php"; 6 date_default_timezone_set('Asia/Tokyo'); 7 } 8}

と記述することで強引に解決しました。
ポイントはWordpressコアファイルのIncludeより下に記述することのようです。
どうもお騒がせ致しました。

投稿2017/03/04 11:21

編集2017/03/04 11:28
kaito3desuyo

総合スコア143

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

サーバー側のタイムゾーンは日本時間に設定していますでしょうか。
また、こちらが「local」になっていないとローカル時間が基準にならないようです。
application/config/config.php

$config['time_reference'] = 'local';

投稿2017/03/04 11:12

編集2017/03/04 11:20
YukiHayakawa

総合スコア53

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

CodeIgniterを使ったことがないのですが、
日付ヘルパー記事によると、専用の日時関数があるようです。

投稿2017/03/04 10:29

seastar3

総合スコア2285

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaito3desuyo

2017/03/04 10:58

記載を忘れておりましたが、mdate関数に関しても試しました。 結果的には9時間前の時刻が表示されます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問