環境
CentOS 6.8 64bit
php 7.0.15
実現したいこと
phpのエラーを記載するログのタイムゾーンがUTCになってしまう。
これを日本時間(JST, Asia/Tokyo)にしたい
状況について
php.iniのdate.timezoneの設定を下記のようにしています。
date.timezone = Asia/Tokyo
この設定で下記のようなエラーが発生するphpプログラムを実行しました。
# cat /home/www/test.php <?php aphpinfo(); ?> # 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で設定しているタイムゾーン以外を参照しているのか、、
おそらくはどこかの設定が間違っているのかと思っています。
解消方法など、おわかりになる方がいらっしゃいましたら、
ご助言いただけると幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。