by 加賀谷昌樹(2011-09-23 18:16:14)
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
by shinoda(2011-09-24 10:45:59)
加賀谷さん、ありがとうございます。
参考になります。
>Default timezone というのは OS のタイムゾーンのことでしょうか?
そうです。
状況としては、OS のタイムゾーンは Asia/Tokyo が指定されていました。しかし、おっしゃるように php.ini が正常に読まれていないためだと思われますが、PHP 側はタイムゾーンが空値(指定無し)と判断しており、件のワーニングが出ているようでした。
(phpinfo で、date.timezone ディレクティブの値が空値表示されている)
/usr/local/php/lib の下にも php.ini を置いてみましたが、状況が変わらなかったので、今回はわけわからず 5.4 系を使うことにしました。
今度、時間がある時に調査してみたいとは思っていますが・・・
.htaccess の使用も考えたのですが、今回は「システム屋さんではない Web 屋さんが、出来合いのプログラムを使う」ケースも考えられたので、.htaccess を置いてくれでは混乱しそうだなあと(^^;
by 加賀谷昌樹(2011-09-26 02:29:39)
.htaccess だとわかりずらいですよね。ほかの記事を拝読すると、RedHat 系をお使いのようですが、EPEL、iuscommunity、remi などの外部リポジトリを利用できないご事情があるのでしょうか?ご自分でコンパイルする方式だとセキュリティリリースがでるたびにコンパイルしなければならなくなり、維持管理がめんどうになりませんかね。
by shinoda(2011-10-03 06:43:39)
今回、元からインストールされていた1.x系と、新たに入れる2.x系を共存させたかったので、2.x系はソースからmakeして入れました。
一応、他のサーバでもソースから入れて、手動でバージョンアップに対応しているものがあるので併せて管理すればいいだけなのですが、数が増えてくると面倒臭くなりそうです(^^;
by shinoda(2011-10-28 10:59:28)
加賀谷さん
結局、php.ini の修正で問題ありませんでした。別のサーバで同様の作業をする機会があったので試してみたところ、
date.timezone = Asia/Tokyo
の記述をするだけで問題ありませんでした。
この時は、Apache を再起動しても php.ini の新しい内容が(/usr/local/php/lib 以下に置いても)反映しないなど不安定な動きをしていたので、そちらの問題だったのかも・・・
色々とご教示いただきありがとうございました。