2007-10-03

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で確認してみるといいでしょう。



ふう、手順は簡単だけど、ここまでたどり着くのにはかなり時間かかりました。

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


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



参考ページ

XREAにPEARをインストールできた - うるめねっと技研 - Linux派 -

point of view point: XREAでPEARを使う

minor tranquilizer » XREAでPEARを使う

Image_GraphとIPAフォントの動作確認 | Sarabande

Hawk's Laboratory » PEAR チャネルサーバを立ててみた

プログラムのプ ブログ » Blog Archive » xreaにpearをインストール

PHP5.0/6.PEARのインストール - Ground-SunLight

XREA で WordPress ファイルアップロード機能を利用する - Numb.

courantcourant 2007/10/09 14:07 パッケージの確認はpear listコマンドもしくはPEAR_Infoの方がいいかもです。

kemworldkemworld 2007/10/10 23:32 コメントありがとうございます!
早速PEAR_Infoを試してみたところ、やはりsafemodeの影響でエラーが出て使えませんでしたorz
たしかに確認方法はもうちょっとスマートにしたいですねぇ、どうしたものか。
普通にsshとか使える人ならたしかにpear listコマンドでいいんですけどね。

みよしみよし 2009/09/19 06:24 非常に参考になりました

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証