さくらのレンタルサーバへPHP5.2.0をインストール
インストール手順は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
Posted by minagi at 3:07 |
固定リンク
|
コメント (0)
|
トラックバック (1)