2009-12-03

PHP: date.timezone に関する警告問題

ちょっと必要があって、Snow Leopard Server 上で WordPress を動かすことにした。その過程で出くわしたことを書き留めておく。全体の流れはこんな風(↓):

  1. PHP モジュールを有効にする
  2. date.timezone に関する警告
  3. phpinfo() を実行する
  4. クライアント版では・・・

PHP モジュールを有効にする

Snow Leopard Server の Web サービスは Apache が使われているが(バージョンは 2.2; in 10.6.2)、デフォルトでは PHP モジュールが無効になっている。まずは、これを有効にすることが必要。

手順は簡単で、「サーバ管理」を起動し Web の「設定」から php5_module のチェックを入れるだけ。あとはウィンドウ右下にある「保存」ボタンを押せば完了。

手作業でやったとしても、/etc/apache2 あたりの httpd.conf を書き換えるだけなんだが、GUI があるとカンタンではある。Apache の停止や再起動も意識せずに済むし。何より、Snow Leopard Server では GUI 中心の管理作業が前提になっているから、不用意に手作業を混じえない方が良い。ちなみに、Apache の管理を手作業でやる前は /etc/apache2/ReadMe.txt を読むべし。httpd.conf の運用に関する注意点が書かれている。

phpinfo() を実行する

まずは、PHP モジュールが動作していることを確認するため、phpinfo() を表示させてみる。これには、通常こういうファイルを用意する(↓)。

(phpinfo.php)
 1: <?php
 2: phpinfo();
 3: ?>

たいした手間ではないけど、Snow Leopard Server ならこれが省略できる。あらかじめ /Library/WebServer/Documentsinfo.php というファイルが用意されているからだ。内容は上とほとんど同じ。違いはコメントで注意書きがある程度。ただし、肝心な phpinfo() を呼び出す行がコメントアウトされている。注意書きによれば、これを実行することでサーバの設定情報が見えるからだと言う。

コメントアウトを外してこのファイルを表示させてみる。上記のフォルダは Snow Leopard Server 上の Apache の DocumentRoot なので、ブラウザからこんな URL を開けば良い。

http://mini/info.php

PHP Version 5.3.0 で、2009-07-19 にビルドされたことなんかがわかる。

date.timezone に関する警告

と、ここで、Apache のエラーログをチェックしてみた。すると、こんな警告が出ていた。

PHP Warning: 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 /Library/WebServer/Documents/info.php on line 5

要は date.timezone を設定しろ、ってこと。ぐぐってみたところ、それには php.ini を使うとわかった。Snow Leopard Server では PHP モジュールを有効にすると、/etc/php.ini が作られる(/etc/php.ini.defaultというファイルがコピーされるだけっぽい)。

該当する部分はこんな感じになっている。見てわかるようにデフォルトの状態では date.timezone は設定されていない。

(/etc/php.ini)
 1:    (...)
 2: [Date]
 3: ; Defines the default timezone used by the date functions
 4: ; http://php.net/date.timezone
 5: ;date.timezone =
 6:    (...)

↑の5行目のコメントアウトを外し、値として Asia/Tokyo を設定すれば良い。警告メッセージは出なくなる。

クライアント版では・・・

比較のために、クライアント版の Snow Leopard でも上記のことを確認してみた。違いは以下のとおり。

  • PHP モジュールを有効にするのは手作業
  • phpinfo() のためのファイルは自分で用意
  • PHP は同じ Version 5.3.0 (ビルド時間も同一)
  • date.timezone に関する警告はやはり出る
  • /etc/php.ini はないので、/etc/php.ini.default を手作業でコピーする
  • 書き換える内容は同じ

その他

ちなみに、Snow Leopard Server には MySQL が同梱されていて、これも「サーバ管理」から有効にするだけで使える。WordPress を動かすのに必要なものは本体以外にないってこと。phpMyAdmin はインストールされていないけれど、WordPress を(ちょっと)動かすだけなら必要性は低い。

関連リンク

0 件のコメント:

コメントを投稿