Edited at

PHPでdate.timezoneを設定したのに反映されない時の対処法メモ(Macユーザー向け)

More than 1 year has passed since last update.


事象

タイトルの通りです。


環境


  • MacBook Pro (Retina, 13-inch, Mid 2014)


    • MacOS Sierra 10.12

    • PHP 5.5.38

    • Apache 2.4.23




対処法


1. ターミナルでPHPの設定ファイル(php.ini)のパスを確認


ターミナル

$ php --ini

Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File: /usr/local/etc/php/5.5/php.ini <--ココ
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed: /usr/local/etc/php/5.5/conf.d/ext-gmp.ini,
/usr/local/etc/php/5.5/conf.d/ext-pdo_pgsql.ini,
/usr/local/etc/php/5.5/conf.d/ext-xdebug.ini


2. php.iniでタイムゾーンを設定


ターミナル

$ vim /usr/local/etc/php/5.5/php.ini

...
907 [Date]
908 ; Defines the default timezone used by the date functions
909 ; http://php.net/date.timezone
910 ;date.timezone =
911 date.timezone = "Asia/Tokyo" <--ココ("付けても付けなくてもOK)
...



3. 2で設定したタイムゾーンが反映しているか確認


ターミナル

$ php -i

...
date

date/time support => enabled
"Olson" Timezone Database Version => 2015.5
Timezone Database => internal
Default timezone => UTC
...



phpinfo()で確認する場合は以下記述してブラウザにてアクセス

<?php

phpinfo();

?>


dateのところ.png

あれ?なんかWarning出てるし、Default timezoneが「UTC」のままだ。

何故だ?...


4. そもそもphp.iniファイルが正しく読み込まれているか確認


ターミナル

$ php -i

...
Loaded Configuration File => (none)
...


configんとこ.png

あちゃー、(none)ってなってるし。そもそもあかんやん。


5. Apacheの設定ファイル(httpd.conf)でphp.iniのパスを指定してあげる

まずはhttpd.confファイルのパスを確認


ターミナル

$ apachectl -V

...
-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"


httpd.confファイルを編集、行末あたりに以下php.iniのパス指定を追記。

そしてApache再起動。


ターミナル

$ vim private/etc/apache2/httpd.conf

...
537 <IfModule php5_module>
538 PHPINIDir /usr/local/etc/php/5.5/
539 </IfModule>
...

$ sudo apachectl restart



6. 最終確認

再度phpinfoを確認してみると...

1.png

よしよし。そして肝心のtimezoneはというと...

2.png

よっしゃー。php.iniのtimezone設定が有効になったー。


以上、解決

ありがとうございました。


参考文献

「PHPINIDir」でphp.iniのパスを指定

※こちらの記事のPHP7用の設定をPHP5用に焼き直しました。ありがとうございましたm(_ _)m