質問: Asia/Tokyo ``` この設定で下記のようなエラーが発生するphpプログラムを実行しました。 ``` # cat /home/www/test.php # php /home/www/test.php ``` すると、下記のようにAsia/Tokyoのタイムゾーンでエラーログに出力されます。 ※ エラーログは/var/log/php.logに出力するように、php.iniで設定しています。 ``` [01-Mar-2017 11:30:40 Asia/Tokyo] PHP Fatal error: Uncaught Error: Call to undefined function aphpinfo() in /home/user/test.php:2 Stack trace: #0 {main} thrown in /home/user/test.php on line 2 ``` ここまでは特になんの問題もないのですが、、、 phpの共有ライブラリの読み込みエラーが発生している場合に、 下記のようにUTCでエラーログが出力されてしまいます。 例えば、「php -v」と実行するとエラーログに下記のようなエラー出力になります。 ``` [01-Mar-2017 02:48:07 UTC] PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/oci8.so' - libclntsh.so.12.1: cannot open shared object file: No such file or directory in Unknown on line 0 [01-Mar-2017 02:48:07 UTC] PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_oci.so' - libclntsh.so.12.1: cannot open shared object file: No such file or directory in Unknown on line 0 ``` 共有ライブラリの読み込みエラーは、滞りなく解消したので、問題ないのですが、 疑問なのは、なぜ共有ライブラリの読み込みエラー時のみ(?)タイムゾーンがUTCになってしいまうのか、 ということです。 phpプログラムを実行する場合のエラーは、php.iniに設定したとおり、 Asia/Tokyoのタイムゾーンで出力されます。(error_log関数を使った際も同様) とりわけ、共有ライブラリの読み込みエラー時のみ、php.iniの設定を読まずに、 UTCになってしまうように見えます。 ### 補足情報 ``` # cat /etc/sysconfig/clock ZONE="Asia/Tokyo" # date 2017年 3月 1日 水曜日 12:04:12 JST # php -i | grep "Configuration File" Configuration File (php.ini) Path => /etc Loaded Configuration File => /etc/php.ini # php -i | grep "timezone" Default timezone => Asia/Tokyo date.timezone => Asia/Tokyo => Asia/Tokyo ``` 質問したいこと -------- なぜ、共有ライブラリ読み込み時のみ、UTCタイムゾーンでログが出力されてしまうのでしょうか? もしかすると、php.iniで設定しているタイムゾーン以外を参照しているのか、、 おそらくはどこかの設定が間違っているのかと思っています。 解消方法など、おわかりになる方がいらっしゃいましたら、 ご助言いただけると幸いです。
回答: `php.ini`の順番の問題、ということはないでしょうか。 `extension=`のほうがタイムゾーン設定より先に来ていれば、設定前なのでUTCとして処理されるでしょう。