質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

7950閲覧

phpのエラーログのタイムゾーンについて

Reiku

総合スコア40

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/03/01 04:13

環境

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で設定しているタイムゾーン以外を参照しているのか、、
おそらくはどこかの設定が間違っているのかと思っています。
解消方法など、おわかりになる方がいらっしゃいましたら、
ご助言いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

php.iniの順番の問題、ということはないでしょうか。

extension=のほうがタイムゾーン設定より先に来ていれば、設定前なのでUTCとして処理されるでしょう。

投稿2017/03/01 04:37

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問