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

事象

タイトルの通りです。

環境

  • 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

関連記事