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

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

新規登録して質問してみよう
ただいま回答率
85.51%
PHP

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

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

2回答

5529閲覧

MAMPの日時(タイムゾーン)の変更ができません...

terashamo

総合スコア20

PHP

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

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2016/03/30 12:42

編集2016/03/30 13:21

先日MAMPをインストールし、簡単な画面遷移やデータベースから値を取得などを行ったりしていたのですが、現在時刻を取得してみたところ日本時間ではないということに気がつきました。

自分なりに調べてみたところphp.iniというファイルのdate.timezone="Europe/Berlin" を
"Asia/Tokyo" に変更すると良いようでしたが、取得する時刻は変わらないままでした。

とりあえず試してみたこと
・mampのphpinfoでphpのバージョン確認し、
/Applications/MAMP/bin/php/php5.6.10/conf/php.iniのタイムゾーン変更
・サーバーの再起動
・phpファイル内にdate_default_timezone_set('Asia/Tokyo')

一応、別バージョンのphp.iniも変更したりしてみたのですが、日本の日時を取得できません。
(取得は date("Y/m/d H:i:s ",time()) で取得しています。)

ものすごく基本的なことかもしれませんが、原因がわかる方がいらっしゃいましたら
よろしくお願いいたします。

追記
現在時刻: 2016/03/30 22:15:57
取得した時刻: 2016/03/30 13:15:57
です、よろしくお願いいたします。

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

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

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

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

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

kei344

2016/03/30 13:11

現在時刻と、MAMPで出力した現在時刻を記入いただけませんか?
terashamo

2016/03/30 13:23

申し訳ありません、追記致しました。 よろしくお願いいたします。
guest

回答2

0

ベストアンサー

date関数のフォーマット文字列にe(タイムゾーン)とU(unix時間)を入れてみましょう。

PHP

1echo date("Y/M/d H:i:s e U");

Asia/Tokyoに設定しているウチのPCではこんな感じになります

2016/Mar/30 22:46:16 Asia/Tokyo 1459345576

時計がずれて表示されるのはタイムゾーンの設定がうまくいっていない場合と時計が間違って設定されてる場合がありますので、まずはここから確認です。

投稿2016/03/30 13:51

crhg

総合スコア1175

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

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

terashamo

2016/03/30 13:59

ありがとうございます、先ほど試してみたところ 2016/03/30 13:56:10 UTC 1459346170 と出力されました。 これはやはりタイムゾーンの設定がうまくいっていないのでしょうか・・・?
crhg

2016/03/30 14:12

そうですね、時計は合っているので、タイムゾーンの設定がうまくいっていないです。 date_default_timezone_setをプログラムで実行するのが一番強いのでdateを使う前に実行されていてエラーを返してなければ(falseを返してなければ)ちゃんと設定されるはずなんですが。
terashamo

2016/03/30 14:41

申し訳ありません、以前はどこが間違っていたのかわかりませんが date_default_timezone_set('Asia/Tokyo'); を実行したところ現在時刻を取得することができました! ありがとうございます! タイムゾーンの設定がうまくいかないのは何故なのでしょうか・・・? 記述もphpのバージョンも間違っていないはずなのですが・・・
crhg

2016/03/30 14:55

phpinfo()で実際に読んだphp.iniファイルはどこにあるものかが表示されますので、設定を行ったファイルと一致するかどうか確認してください。 また5.4.0より古いバージョンのphpだとphp.iniの設定よりTZ環境変数の方が優先されるので、もし古いバージョンを使っている場合はそれも確認してください。
terashamo

2016/03/30 21:41

Configuration File (php.ini) Path の欄で合っていますでしょうか? であれば/Applications/MAMP/bin/php/php5.6.10/confなので 設定を行ったファイルと一致しています。 バージョンも5.6.10でした。
terashamo

2016/03/30 21:59

連続して申し訳ありません、phpinfo()のdateの欄のdate.timezoneを見ると"Asia/Tokyo"になっており、違和感を感じましてphp.iniの設定で"Asia/Tokyo"をAsia/Tokyoと ""を外したところ解決いたしました! 本当にありがとうございました。
crhg

2016/03/30 22:29

設定値がおかしかったと言うことですね。エラーログを見るか、ini_set('display_errors', 1); でエラーが画面に表示されるようにすると早く問題が見つかったかもしれません。 以下のようなエラーが出力されていたはずです。 Warning: date(): Invalid date.timezone value '"Asia/Tokyo"', we selected the timezone 'UTC' for now. in XX.php on line XX
terashamo

2016/03/31 04:00

おっしゃる通りのエラーが出ていました。 エラーのログは見ないといけませんね… 画面に出すこともできるのですね、勉強になります! 繰り返しになりますが、ありがとうございました。
guest

0

調べてみると、MAMPには複数バージョンのPHPがデフォルトで入っているようなので、それらのphp.iniも一度編集されてみてはいかがでしょう。

【php.iniファイルの場所/PHPのバージョン確認・変更 - MAMPの使い方 - PHP入門 - Webkaru】
http://webkaru.net/php/mamp-php-ini-file-locate/

また、タイムゾーンは下記コードか、phpinfoで確認できると思います。

PHP

1if (date_default_timezone_get()) { 2 echo 'date_default_timezone_set: ' . date_default_timezone_get() . '<br />'; 3} 4if (ini_get('date.timezone')) { 5 echo 'date.timezone: ' . ini_get('date.timezone'); 6}

投稿2016/03/30 14:16

kei344

総合スコア69357

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

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

terashamo

2016/03/30 14:45

ありがとうございます。 やはりタイムゾーンの設定が初期のままになってしまっているようでした。 以前、いくつか違うバージョンのphp.iniも編集してみたのですがダメそうでした・・ が、すべてのバージョンで試したわけではないので一通り試してみます!
terashamo

2016/03/30 21:49

ありがとうございます。 実行してみたところ /Applications/MAMP/bin/php/php5.6.10/conf/php.ini と出力されました。 php_ini_scanned_files()は何も出力できていないようでした。 --with-config-files-scan-dirがセットされていなければ、 FALSEを返す、とあったのですが 何か設定が必要なのでしょうか?
terashamo

2016/03/30 22:05

php.iniのdate.timezone="Asia/Tokyo"を date.timezone=Asia/Tokyoとすることで 日本の現在時刻を取得することができました! アドバイスありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問