XREAでPEARをインストールするのにハマッタときのメモ

携帯サイトを作るにあたり、PEARのNet_UserAgent_Mobileが使いたいなと思い、XREAPEARをインストールしようとしたところでおおいにハマッタ。


めちゃくちゃ時間がかかったが結論としては、


XREAではすごく簡単にPEARをインストールして使うことができる」


ということがわかった。


ただ、そんなことはただの一言も、どこにも説明されてなかったのでそこにたどり着くまでが・・、時間かかったなあ。。

前提

使いたいものがすでに入ってないか確認しよう♪

まず、XREAにはある程度の標準的なPEARライブラリはすでにインストール済みのようだ。


classcheck.php

<?php
require_once 'Mail.php';
var_dump(class_exists('Mail'));
?>


たとえば上のようなファイルをXREAの任意のフォルダにアップして確認すると、たぶん

bool(true)


となるはず。
これはXREAPEARのMailライブラリがすでにインストール済みであるということ
(ていうかもし入ってなければ最初のrequire_onceの時点でエラーが発生する)。


自分が使いたいPEARのライブラリがすでにインストール済みでないか、まずはこんな要領で確認してみるといいでしょう。

XREAphpはセーフモード(safe mode)で動いている、ということを知っておこう。

わりと有名な話っぽいですが、XREAphpはセーフモードで動いているため、いろいろと動作に制限がかかっています。


この制限にひっかかって動くはずなのに動かない!!となってハマル場合がよくありそうです(ていうかボクです)。


セーフモードでどんな制限がされるのか、ということについてはマニュアル参照↓


PHP: セーフモード - Manual

とくに特別な理由がなければphp5のサーバーを使おう。

php4はサポート終了するよ宣言もされたことだし、
php5で使うほうがPEARは安定してそうだし、


よほどphp4じゃなきゃダメなんだ!


という場合以外はphp5のサーバーを利用したほうがいいでしょう(無駄にハマルのはさけよう)。

今回目指すこと

前述のようにXREAにはすでにある程度のPEARライブラリはインストール済みです(最近のなら)。
なので、


「すでにインストール済みのPEARライブラリ → 元から入ってるやつを使用する。」
XREAには入ってないやつ → 独自でインストールした奴を使う。」


という状態を目指します♪

PEARのインストール

今回やるのはこれです↓まずはマニュアルを眺めましょう。


PEAR :: Manual :: 共有ホストでの PEAR のローカルコピーのインストール


すでにインストール済みの共有PEARはそのままに、自分のユーザディレクトリ内にローカルコピーを作成して、さらに自分が欲しいライブラリを追加するやり方です。


具体的手順としては、


XREAのサーバーにsshでログインしてちゃちゃっとコマンド打ち込んで、さっとインストールを終わらせる」


という感じになります。

注意点

ここで注意したいことがあります、


PEARをインストールするディレクトリをpublic_htmlより外側の階層にしてしまうと、phpのセーフモードの制限にひっかかってうまくincludeできない!!」


たとえば「/virtual/自分のユーザ名/pear」みたいなとこにインストールしちゃうと面倒なことになります。

まあ、これをやってしまったとしても、


PHPをCGIとして動かす方法について - XREA&CORE SUPPORT BOARD


と紹介されているようにphpcgiとして実行すればセーフモードの制限にひっかからずに動かすことができます。


でもセーフモードじゃなくしちゃうのもなんですよね、動きも重くなるらしいし。
なのでpublic_html直下にPEARをインストールしましょう!


public_html直下にPEARディレクトリがあるのもそれはそれでどうかと思う、という感じもするけど、まあ前述の問題をふまえてどちらのやり方を選ぶか、という感じですね。


ボクはpublic_html直下にインストールするほうを選びました。

sshxreaにログイン

ここからはxreaのサーバーにsshでログインして操作します。


まず、自分のXREAサーバーの管理画面で「ホスト情報登録」をする。

puttyなどのsshクライアントでログインする。


という感じで自分のXREAサーバーにsshでログインしてください。


ちなみにボクは


PuTTY ごった煮版


を使っています。

コマンドを打ち込む。

ここからsshでコマンドを打ち込んでいきます。


sshでの操作は自己責任で!)
すべてユーザディレクトリ直下での作業です(つまりログインしたまんまの位置)。
↓のページを参考にしました。

Dreamhost で PEAR ローカルコピーを作る

pear config-create /virtual/自分のユーザ名/public_html .pearrc


まずこうやって打ち込むことでpearの自分用の設定ファイル(.pearrc)が生成されます(ユーザディレクトリ直下にできる)。上のように打ち込むことでpublic_htmlの下にpearディレクトリを作成する設定になります。


で上の参考ページではいくつか手順書いてありますが、今のXREAなら次に

pear install -o PEAR


とやるとひととおりPEARディレクトリ・ファイル群がpublic_htmlの下にインストールされます。


あとは自分のインストールしたいPEARパッケージを、

pear install XML_RPC


といった要領でどんどんインストールできます(依存関係は自動で解決してくれます)。

パスを通す。

自分でインストールしたPEARのライブラリを使うために、


/virtual/自分のユーザ名/public_html/pear/php


にパスを通します(phpディレクトリ下に実際のライブラリがある)。


.htaccessを使う方法が一番楽でしょう。


.htaccess

php_value include_path ".:/usr/local/lib/php:/virtual/自分のユーザ名/public_html/pear/php"

ちなみに

.:/usr/local/lib/php

の部分は元から設定されていたinclude_pathを書いておきます(これはボクの場合こうだったということ)。
phpinfoなどで念のため確認することをオススメします。


これをPEARライブラリを使うディレクトリにおいておけば、その中のファイルなら

<?php
require_once 'Mail.php';
?>


という形でPEARライブラリを呼び出せます。


(20080724追記)
coreserverではphp.iniを設置できるようになっており、これらの値はphp.iniに書いておかないと反映されないみたいです。


php.ini記述例

include_path = ".:/usr/local/lib/php:/virtual/自分のユーザ名/public_html/pear/php"


最後にちゃんとPEARライブラリを呼び出せるか、最初のほうで紹介したclasscheck.phpで確認してみるといいでしょう。



ふう、手順は簡単だけど、ここまでたどり着くのにはかなり時間かかりました。
そしてここまでたどりつけたのは同様の問題に取り組んだ先人のみなさまの記録のおかげです、どうもありがとうございました。


今回は以下のページも参考にしました。