php.iniでタイムゾーンが変わらないときはこれが原因かも?3つの設定方法

php.iniでタイムゾーンが変わらないときはこれが原因かも?3つの設定方法

皆さんこんにちは。

特定の時間帯だけある処理をしたい時ってありますよね?

そんなときにまずタイムゾーンが日本時間かどうかを確認すると思いますが、どこを変えればいいのか。 3つの方法を紹介しますね。

特定のファイル内でのタイムゾーンを変える

まずはPHPスクリプト内でタイムゾーンが変更されていないかを確認します。

たとえOS(オペレーションシステム)自体の設定やphp.iniの設定が日本時間になっていても、スクリプト内でタイムゾーンを変更する関数が実行されていたら、そちらが優先されます。
なのでまずはphpファイル内で変更されていないか確認しましょう。

date_default_timezone_set で検索をかけます。もし日付の操作にDateTimeオブジェクトを使っているならsetTimezoneでも検索してください。
検索をかけてその関数が実行されていたら、それを削除するか、日本時間に変更しましょう。

date_default_timezone_setは引数にタイムゾーンをとりタイムゾーンを設定する関数。setTimezoneはクラスDateTimeのメソッドです。

PHPの設定自体を変える

php.ini を開き、date.timezone =の記述を探します。

php.ini は、基本的に/etc/php.ini にありますが、バージョンによっては違う場所にある場合も!その場合はphp -i | grep php.iniで検索をかけましょう。

コメントアウトされていたら外し、date.timezone = Asia/Tokyo に設定。

ウェブサーバーを再起動させれば反映されます。

(ウェブサーバーはapacheやnginxなどがメジャーです。apacheならservice httpd restartで再起動。)

php-fpm使っているならそちらも再起動してください。

システム自体のタイムゾーンを変える

ターミナルにログインし、以下のコマンドを実行します。

sudo vim /etc/sysconfig/clock

開いたら、以下のように編集しましょう。

ZONE="Asia/Tokyo"
UTF=false

最後にシンボリックリンクを張ります。

sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

これでタイムゾーンは日本時間になりました。

dateコマンドを打つと日本時間になっていることが確認できたと思います。

最後に

特定の時間帯によって切り替える処理を行うときは、タイムゾーンが標準時になっていないか確認しましょう。

OS自体のタイムゾーンを日本時間にしておかないと、夜中にツイートされていた…なんてこともありえますからね。

ではでは。


Previous: 申し込みってめんどくさい?~フォーム作成の工夫あれこれ!~ Next: ロゴはこうして出来上がる!ロゴ作りに役立つ制作フローを紹介!

© 2017 ALL CONNECT Inc. All Rights Reserved.