Fedora VM に ZendServer CE (PHP 5.2) をインストールし、システムのタイムゾーンを「アメリカ/シカゴ」に設定しています。php.ini ファイルに date.timezone = 'UTC' があり、date_default_timezone_get() を呼び出すか、Web ページに date('T') を表示すると、'CDT' と表示されます。
date_default_timezone_get() のphp.netのドキュメントには、デフォルトのタイムゾーンを選択するときに次の順序に従うと書かれています。
- Reading the timezone set using the
date_default_timezone_set() function
(if any)
- Reading the TZ environment variable
(if non empty)
- Reading the value of the
date.timezone ini option (if set)
- Querying the host operating system
(if supported and allowed by the OS)
「セットアップ」GUI を使用してシステムのタイムゾーンを変更し、サーバーを再起動すると、date('T') は、php.ini の内容に関係なく、システムのタイムゾーンを変更したものを返します。また、TZ 環境変数もありません。現在、コードのどこにも date_default_timezone_set() を使用していません。
何が起こっているのでしょうか?date_default_timezone_set('UTC') を呼び出すことでいつでもシステムのタイムゾーンをオーバーライドできることはわかっていますが、可能であれば php.ini ファイルに依存したいと思います。
助けてくれてありがとう、
デイブ