私的アンテナTYPE-F(赤は48時間以内に更新されたコンテンツ)
<|日々の戯言アニメコミックゲーム美少女系ゲームフィギュアドール全般しーぽんちっちゃなもこちゃんえっくす☆きゅーとアキバ系りとらばU-10BLOGネットネタこのサイトについて|>

2006年11月10日 (金曜日)

[ BLOG ]

さくらのレンタルサーバへPHP5.2.0をインストール

Powered by PHP5.2.0 - 200 x 113
先日PHP-5.1.6を入れたばかりですが、多数のバグフィックス、パフォーマンスが更に向上した5.2.0が正式リリースされたということで、早速アップグレードしてみました。
なお5.2.0はレンタルサーバ等にインストールする場合、PEARで失敗する可能性があります。
以下その要所だけ書いておきます。

インストール手順は5.1.6と同じです。
ということで、前回と同じく参考にしたサイトをあげておきます(^^;
php5 手動インストール+cgi-mode(レンタルサーバ)
activecollab
さくらのレンタルサーバでPHP5

さて、上記サイトの手順に従い作業は順調に進行中・・・でしたがここで問題が発生。
make install中、以下のようなメッセージが出力され、何故かPEARモジュールのインストールに失敗してしまいます。

%make install
Installing PHP SAPI module: cgi
Installing PHP CGI into: /home/xxxxxxxx/php5/bin/
Installing build environment: /home/xxxxxxxx/php5/lib/php/build/
Installing header files: /home/xxxxxxxx/php5/include/php/
Installing helper programs: /home/xxxxxxxx/php5/bin/
program: phpize5
program: php-config5
Installing man pages: /home/xxxxxxxx/php5/man/man1/
page: phpize5.1
page: php-config5.1
Installing PEAR environment: /home/xxxxxxxx/php5/pear/
could not extract the package.xml file from "phar://install-pear-nozlib.phar/Archive_Tar-1.3.1.tar"
[PEAR] Archive_Tar: Cannot initialize 'phar://install-pear-nozlib.phar/Archive_Tar-1.3.1.tar', invalid or missing package file
could not extract the package.xml file from "phar://install-pear-nozlib.phar/Console_Getopt-1.2.tar"
[PEAR] Console_Getopt: Cannot initialize 'phar://install-pear-nozlib.phar/Console_Getopt-1.2.tar', invalid or missing package file
could not extract the package.xml file from "phar://install-pear-nozlib.phar/PEAR-1.4.11.tar"
[PEAR] PEAR: Cannot initialize 'phar://install-pear-nozlib.phar/PEAR-1.4.11.tar', invalid or missing package file

Installing PDO headers: /home/xxxxxxxx/php5/include/php/ext/pdo/

調べてみたところ、どうもPEAR(orパッケージ)の仕様が変わったのか、環境変数の未設定が原因でインストールに失敗する場合があるようです。
vine-php - php5-5.2.0-0vl2

spec で設定している環境変数 PHP_PEAR_CACHE_DIR が原因であることは 分かりました。この環境変数は /etc/php5/pear.conf の cache_dir を /var/lib/cache/php5-pear にするために設定しています。設定しないと デフォルトの /tmp/pear/cache になってしまいます。

これが失敗の原因となる理由というか流れは以下の通りです。ポイントは3.です。

1.PEARのファイル展開用ディレクトリを格納する変数cache_dirを設定するため、環境変数PHP_PEAR_CACHE_DIRが参照される
2.同環境変数が未設定だったため、デフォルトの「/tmp/pear/cache」がcache_dirに設定される
3.対象のサーバでは先にrootが「/tmp/pear/cache」をユーザーが書き込めない状態(755)で使っていた
4.展開したファイルを3.のディレクトリにユーザー権限※で書き込もうとしたため失敗、エラーとなる
※共有レンタルサーバではVDSなどと異なり、suは使えません

5.1.6まではconfigureで設定したインストール先がPEARにも反映されていたようですが、5.2.0はそれが継承されず、別途環境変数を必要とするようです。
そのため環境変数が未設定な状態で設定されるディレクトリがrootと共通となり、問題を引き起こしていたということです。
無論、他のユーザーが同ディレクトリを押さえていた場合も同様でしょう。

そこでこれを解決するため、単純ですがsetenvで環境変数「PHP_PEAR_CACHE_DIR」を設定してあげます。

%setenv PHP_PEAR_CACHE_DIR /home/xxxxxxxx/php5/pear/cache;

上の例ではインストール先にcache_dirを指定していますが、乱暴ですが書き込めればどこでも構いません。
この後再度make installを行うと、今度はPEARも正常にインストール出来ました。
なお、setenvしたcache_dirの内容はpear.confに継承されており、今のところPEARの動作にも問題はないようです。

ということで、PHP-5.2.0+PEARのインストールは他の共有レンタルサーバでも問題を起こす可能性があるので要注意です。
ちなみにPEARを使わないor別途インストールする場合(configure--without-pear指定)、5.1.6と同手順でエラーもなくインストールは完了します。

ところで5.2.0では、php.iniに対する文法チェックが厳しくなっており、セクションからきちんと記述しないと認識しないようです。
php4.xの時代から引っ張っているphp.iniなどであれば、今一度見直しをお勧めします。
#実は最初全く反映されずに焦った人(^^;

・2007/01/22【追記】
 「さくらのレンタルサーバへPHP5をGDバンドル版としてインストール」でも書きましたが、PHP5.2.0本体はさくらのドメイン、サブドメイン毎にコピーせず、ハードリンクを作成すれば別途ディスク容量を消費しません。
 ここへリンクしてくださるサイトの中にcpされている記事がありましたので補足。

・2007/06/03【追記】
 PHP5.2.3以降は仕様が変わり、cgi動作用実行ファイル名がphp→php-cgiとなります。
 従来のphpはモジュール動作用なので、それをcp、またはlnするとエラー500 Internal Server Errorを起こして動きません。
 間違えないようにして下さい。

【関連するトピックス】
さくらのレンタルサーバへPHP5.2.5をインストール
さくらのレンタルサーバへPHP5.2.4をインストール
さくらのレンタルサーバへPHP5.2.3をインストール
さくらのレンタルサーバへPHP5.2.2をインストール
さくらのレンタルサーバへPHP5.2.1をインストール
さくらのレンタルサーバへPHP5をGDバンドル版としてインストール

【関連するリンク】
PHP: Hypertext Preprocessor

トラックバック
このエントリーのトラックバックURL:

スパム対策の為、トラックバック元URLに本Blogへのリンクを含まない場合、トラックバックを受け付けない仕様になっています。また、Blogやそれに順ずるシステム以外からのトラックバックも受け付けません。予めご了承ください。
なお、お手数ですがトラックバックURLより「☆★」を取り除いてください(オートディスカバリ非対応です)
このリストは、次のエントリーを参照しています: さくらのレンタルサーバへPHP5.2.0をインストール

さくらでphp5(pearエラー対応)
さくらインターネットでphp5をインストールする手順はたくさんの人が書いているけど、それらを参考にphp-5.2.0をインストールしてみたところ、make in... [続きを読む]

Trackbacked by: 【cafe chantant blog】 at 2006年12月04日 00:55

コメント
コメントする






情報を保存しますか?


画像の数字を入力