エックスサーバー、シックスコアのPHPバージョンアップで躓いたメモ

WordPress3.2系からサーバ要件としてPHP5.2.4以上が必要となりました。
サーバの用意 – WordPress Codex 日本語版

運用しているエックスサーバー,シックスコア(以下エックスサーバー系)では2011/09/20現在PHPバージョンは以下の通り

  • PHP4.3.9(非推奨)
  • PHP5.1.6(推奨)
  • PHP5.2.14
  • PHP5.3.3

これまで5.1.6を利用していたものをWordPressバージョンアップに合わせて5.3.3にアップグレードすることにしました。
その際、WordPress、オリジナルプログラムでPHPのエラーが発生したので解決方法をシェアしたいと思います。

PHPをバージョンアップ後もWordPressのバージョン未対応警告が表示される

コントロールパネルでPHP5.3.3に変更したにも関わらず以下のような警告が表示されてしまいます。

サーバーの PHP バージョンは 5.1.6 ですが WordPress 3.2.1 は 5.2.4 以上のみでご利用になれます。

原因としてはエックスサーバー系では.htaccessのAddHandlerで以下記述をしないとPHP4.3.9として認識されるらしく、今回は”AddHandler x-httpd-php5 .php”としていた為、PHP5.1.6として認識されていたようです。
PHP5.3.3用の記述により正常にWordPressが表示されるようになりました。

PHP4.3.9
.htaccessに記述必要なし
PHP5.1.6
AddHandler x-httpd-php5 .php
PHP5.2.14
AddHandler x-httpd-php5.2 .php
PHP5.3.3
AddHandler x-httpd-php5.3 .php

以前PHP5.1.6でWordPressをインストールした際も.htaccessにAddHandlerで指定していなかったのでPHP4.3.9と誤認識されて躓いた記憶があります・・・

PEARモジュールが読み込まれない

require_once 'PEAR.php';

自作プログラムでPHP5.1.6までは標準でインストールされているPEARの読み込みが上記で動作していたのですが5.3.3にバージョンアップ後は以下のエラーが出て読み込まれていないようでした。

Warning: require_once(PEAR.php) [function.require-once]: failed to open stream: No such file or directory in /hoge/hoge.php on line 2
Fatal error: require_once() [function.require]: Failed opening required 'PEAR.php' (include_path='.:') in /hoge/hoge.php on line 2

PEARへのパスが通っていないのは分かったのですがマニュアルやよくある質問を検索してみてもそれらしい解決方法は見つからずgoogle先生に頼ることに。
Xserver の便利なphp.ini のカスタマイズ – Mottys Web page!より解決方法が見つかりました。

php.iniに以下を記述することでPEARへのパスを通すことができました。

include_path = ".:/usr/share/pear5.3"

エックスサーバー系はどうもPHPバージョン変更に対するphp.iniへのサポートがいまいちなのか、エックスサーバではバージョン切り替えページに以下の注意書きがあったのですがシックスコアではありませんでした。

■お客様側で個別にphp.iniを設置されている場合のご注意  【PHP5.2.x】【PHP5.3.x】では php.ini 未設定項目の値は  php4/php5.1とは異なる値となる場合があります。

特にお客様側で個別に設置されているphp.iniにて、  「sendmail_path」や「date.timezone」が未設定の場合、  プログラムが正常に動作しなくなる可能性があります。
 上記現象を回避するには、事前に php.ini に設定値を追記する必要があります。

※「sendmail_path」と「date.timezone」のデフォルトのphp.ini設定値は以下になります。
 —————————————-
 sendmail_path = /usr/sbin/sendmail -t -i
 date.timezone = “Asia/Tokyo”
 —————————————-

案の定シックスコアでdate.timezoneを設定していなかったためエラーで躓きましたし・・・

エックスサーバ系は管理画面もわかりやすくてバージョンアップ対応なんかも迅速なのでよく利用させて頂いているので、マニュアルをもう少し充実させて頂ければと思います。