電気ウナギ的○○

About Home

結局、PHP 5.3系では timezone 設定がらみのワーニングが消せなかった

shinoda (2011年9月21日 04:11)
もう午前4時だ・・・俺はまだ十日市にいる。

ずっと PHP のインストールをしていたのだ。

今日時点で最新の PHP 5.3.8 をインストールしたところ、phpinfo の実行で、

Warning: phpinfo() [function.phpinfo]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /var/apache/htdocs/test.php on line 1

というようなワーニングが出てしまう。
どうも、Default timezone と php.ini で設定している timezone が同じでないと警告されるようなのだ。セキュリティの問題なのかな?よくわからんが、5.3系からの仕様らしい。

php.ini 内に

date.timezone = Asia/Tokyo

という記述を加えれば解決するらしいのだが、ここで困った問題が。

configure した時、特に --with-config-file-path は指定していないので、出来上がった php は /usr/local/lib/php.ini を参照するはずである。
なのに、phpinfo で表示されている Configuration File (php.ini) Path は /usr/local/php/lib を指しているのである。

/usr/local/lib/php.ini に date.timezone の記述を追加し、httpd を再起動しても状況変わらず。だからといって、/usr/local/php/lib/php.ini に同じものを置いても、やっぱり状況変わらずなのだ。どうにも php.ini の内容が反映していない様子。(ちなみに、ブラウザのキャッシュが・・・というような素人じみた落ちは無い(^^;)

何度か --with-config-file-path オプションをつけて再インストールしてみたのだが、何か php 動かなくなっちゃったし(^^;
make clean してやり直していたのだが、make clean した後でソース展開したディレクトリも消して、ソースを展開するところからやり直せばよかったのかな・・・
どうも、make clean だけではさっぱりきれいにならないようである。

結局、解決策は、

5.2系をインストールする

・・・である(^^;

元々ユーザー要件としては「PHP 5.2 のインストール」となっていたので、その最新の 5.2.17 をインストールした。
5.2系は良いなあ。
Default timezone と php.ini で設定している timezone が同じでなくとも、ワーニングなんか吐かない。
そして、php.ini に date.timezone の記述を追加して httpd を再起動すれば、phpinfo の date.timezone directive に関する情報も、すぐに Asia/Tokyo に変更された。

う~ん・・・何か、もっと configure の時に色々とオプションが必要だったんかなあ?

ま、今回は 5.2.17 でまったく問題無いんだけど、今後のことを考えると、5.3系で上手くいかなった理等を調べておきたかったな。

ま、もう、今日は駄目です(^^;

今から岩国まで帰れるかなあ・・・

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(5)

加賀谷昌樹2011年9月23日 18:16

Default timezone というのは OS のタイムゾーンのことでしょうか? PHP にとっては php.ini ファイルの date.timezone ディレクティブの値がデフォルト値です。


Loaded Configuration File の値がどうなっているのか知りたいですね。ファイルを配置したもののパーミッションの関係で読み込みできないのか、それともほかの php.ini ファイルが読み込まれ、date.timezone の値が上書きされてしまっているのか。


make で止めてシステムにインストールせずに sapi/cli/php を使うのであれば php -i | grep Configuration で調べることができます


現状のPHP環境はそのままで、PHP 5.4 を試す
http://www.1x1.jp/blog/2011/06/try_new_php_without_update_current_version.html


--with-config-file-path が指定されていない場合に Configuration File (php.ini) Path の値が /usr/local/php/lib になるのは正常な状態です。


php.ini ファイル読み込みの優先順位は次のページに書かれています

http://www.php.net/manual/ja/configuration.file.php


次善策としてはエラーメッセージに書かれているように
「date_default_timezone_set('Asia/Tokyo');」の行をスクリプトに追加するか、スクリプトごとに追加することがめんどうなら、.htaccess で指定します。


<IfModule mod_php5.c>
php_value date.timezone Asia/Tokyo
</IfModule>


PHP 5.4 からは date.timezone ディレクティブもしくは date_default_timezone_set() 関数がセットされていなければ、 UTC が使われます。

http://svn.php.net/viewvc/php/php-src/tags/php_5_4_0beta1/NEWS?revision=316805&view=markup

加賀谷昌樹2011年9月26日 02:29

.htaccess だとわかりずらいですよね。ほかの記事を拝読すると、RedHat 系をお使いのようですが、EPEL、iuscommunity、remi などの外部リポジトリを利用できないご事情があるのでしょうか?ご自分でコンパイルする方式だとセキュリティリリースがでるたびにコンパイルしなければならなくなり、維持管理がめんどうになりませんかね。

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1776

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE