レンタルサーバにPEARライブラリCashe_Liteをインストールする方法

今回は、レンタルサーバに、PEARライブラリCashe_Liteをインストールした方法を紹介します。
試したレンタルサーバは、さくらインターネットスタンダードXSERVER X10VALUE SERVER エコ です。

SSH、go-pear.php、FTP、と、3つのインストール方法をそれぞれ試しましたが、一番カンタンで、うまくいった方法である、FTPによるファイルアップロードをオススメします。
※FTPで、圧縮ファイル(Cache_Lite-1.*.*)をダウンロードして解凍すると、中身にXMLファイルだけしかないことがあります。
これの解決策もあわせて解説しています。


FTPによるファイルアップロードであれば、その他のレンタルサーバでも、使える方法だと思いますので参考になれば幸いです。


PEARライブラリとは?

「PEAR」は「PHP Extension and Application Repository」の頭文字をとったもので、「ペア」と読みます。
PHPのコードの構造化されたライブラリとのことです。


Cache_Liteとは?

PEARライブラリの中の、キャッシュシステム。
APIを使ってサイトをつくる場合に、よく使われるもの。

本格的に、データの多いサイトをつくる場合、データベースも連携させる必要があるかと思いますが、
簡易なキャッシュシステムのみであればCache_Liteだけで作成可能です。

結局、遠回りにはなりましたが、3つすべての方法を試したので、順に記載していきます。



1.SSHを使う方法


SSHを使い、いわゆる「黒い画面」でコマンドを打ち込み、遠隔操作でサーバにCache_Liteをインストールする方法です。
結局、うまくいかなかったのですが、一応そのプロセスを掲載しておきます。

まず、TeraTermを使い、SSHでサーバにログイン後、

pear list

と打ち込むと、Cache_Liteが既にインストールされているかどうか確認できます。


さくらスタンダードでpear list 

pear_list_sakura.png

Cache_Liteはありません。


XSERVER X10でpear list
pear_list_xserver.png

こちらも、Cache_Liteはありません。


VALUE SERVERエコでpear list
pear_list_valueserver.png

こちらは、既にインストールされています。
ちなみに、VALUE SERVERの下位プランにあたるXREA PLUSにも既にインストールされていました。

そのままSSHで次のコマンドを打ちます。

pear install Cache_Lite
これでインストールできるようなのですが、各サーバで下記のようなエラーがでました。


さくらインターネットスタンダード
cache_miss_sakura.png
インストールできません。

XSERVER X10
cache_miss_xserver.png
インストール失敗。

VALUE SERVERエコ
cache_already_install_valueserver.png
「Cache_Liteはすでにインストールされています。」とのこと。


結局、SSHでは、Cache_Liteはインストールできませんでした。

「Cache_Liteをインストールするまでの作法自体が足りてないのか?」とか、バージョンやプロキシがどうとか、素人ながら色々と調べたりもしました。

しかし、そもそもroot権限のない共有レンタルサーバなので、「出来なくて当たり前なのかも。」と思いなおし、これ以上は難しいと判断し、別の方法をとることにしました。

※ちなみに、次にあげる「go-pear.php」やFTPでインストールした後にSSHで「pear list」 コマンドを打っても 、Cache_Liteは表示されません。



2.go-pear.phpを使う方法


go-pear.phpというものをFTPからサーバにアップして、ブラウザからCache_Liteをインストールしていく方法です。

ウィザード形式で、ブラウザからサーバの各設定項目を入力してインストールできるので、非エンジニア向けだと思い、試してみました。
実は、過去(2012年6月ごろ)、こちらの記事を参考に、さくらインターネットサーバには、インストールに成功したのですが、XSERVERにはインストールできませんでした。
さらに現在は、どちらのサーバも途中でインストールが止まってしまいます。

FTPでサーバを見ると、ファイルは存在し、インストール自体はされているようなのですが、途中で止まった画面のことを考えると、不安極まりないですね。
また、さくらサーバへのインストールに成功した時も、一部リンクが切れていたりと、サーバによって挙動も違うようでしたので、go-pear.phpによるインストールも推奨しませんが、一応そのプロセスを掲載しておきます。


go-pear.phpをダウンロードし、任意の場所にFTPでアップ

上記のURLのスクリプトを開き、go-pear.php と名付け、ローカルに保存します。
保存したファイルをFTPで、サーバにアップロードし、アップロードしたURLにアクセスします。
go-pear1.png
「NEXT >> 」をクリックし、次のページへ。


go-pear2.png
上部にあるチェックボックスの「PEAR_Frontend_Gtk2 」と 「MDB2」にチェックを入れます。

PEAR_Frontend_Gtk2とは
PEAR_Frontend_Gtk2 は、PHP-Gtk2 を使用した PEAR 用のフロントエンドです。 
さまざまなチャネルのパッケージを一覧し、 インストールやアンインストールを行うことができます。

とのことです。よくわからなければ、チェックしなくとも良いかと思われます。
私もよくわかりませんが、 「MDB2」は、SSHの「pear listコマンド」で確認した時に、さくらサーバとValueServerでは表示されていましたね。

さらに、「Configuration」の1番と11番の項目を入力します。


1. Installation prefix ($prefix)

pearをインストールするサーバパスを設定します。初期値では、現在アクセスしているgo-pear.phpまでのパスが自動で入力されています。
大抵は外部からアクセスできないパスに設定するのが良いようです。
さくらサーバの場合であれば、
/home/ユーザーID/pear/
など、wwwフォルダより上位の階層であれば、大丈夫です。
また、このpearフォルダがなくても、インストール時に自動でつくられます。


11. php.exe path, optional (CLI command tools)

11番には各サーバのphpのコマンドパスを入力します。

入力後、「install」を押下。

go-pear3.png

上記のように、現在ではどのサーバで試しても21%で停止し、エラーがでてしまうようです。
また、過去にインストールに成功した場合でも、内部ファイルのリンクが切れていたり、2つあるうちの検索窓の一方からライブラリを検索しても、表示されないなど、もろもろ不安な印象を受けました。

こちらのブログによると、pear.php.netのgo-pear.phpには様々なエラーがあり、更新も止まっているようです。
プログラムにいろいろと手を加えることで、動作するようですが、結構敷居が高い印象です。

ということで、go-pear.phpによる導入もここで中断。
セキュリティのためgo-pear.phpファイルと、生成されたCacheフォルダも削除しておきましょう。


そして最終的には、次項の一番簡単である「FTPによるアップロード」にたどり着きました。


3.FTPによるファイルアップロード


実は、一番簡単なはずのFTPによるアップロードなのですが、ダウンロードした圧縮ファイルの解凍時に罠があり、それにハマったがゆえ、SSHやgo-pear.phpによるインストールを試していた、という経緯だったんです。
その罠さえ回避できていれば、問題なく簡単にインストールできます。 


Cache_Liteパッケージをダウンロードする
上記URLからCache_Liteパッケージをダウンロードします。

pear_manual_dl.png
「Download For manual installation only」のところです。


ダウンロードしたファイルの名前を変更してから、解凍する。
ファイルは「.tgz」ファイルなので、Windowsであれば、LhaPlusなどのソフトで解凍できるのですが、このまま解凍すると、なぜかxmlファイルしかありません。
この「罠」により、ここからどうするかわからず、いきづまっていました。

xml_only.png

実は、これは解凍後に、内部にあるフォルダ名が、解凍前の.tgzファイルと同一の名前であるために起こる現象のようです。
そのため、解凍前に「.tgz」ファイルの名称を任意のものに変更しておきます。
(実は、オオサカンスペースにて佐田さんに教えてもらいました。)

「Cache_Lite-1.7.15.tgz」から「cache.tgz」等に変更します。
に変更後、tgzファイルをLhaplusで解凍してみると、「Cache_Lite-1.7.15」フォルダと、「package.xml」ファイルがあれば成功です。
rename_cache_lite.png

解凍された「Cache_Lite-1.7.15」フォルダの中に「Cache」フォルダがありますので、これを、サーバにアップロードします。(必要なのはCacheフォルダのみ)
go-pear.phpの時にも説明しましたが、ウェブ上からはアクセスできないところの階層にアップするのが望ましいようです。


 使い方

Cache_Liteの使い方は、多くのWebサイトで詳しく説明されていますが、ここにも一応さわりだけ載せておきます。


include_pathを指定
php.ini にinclude_pathを書きます。(.htaccess)に書くことも可能。

include_path=".:/home/ユーザーID/pear/PEAR"
上記の指定をすることで、実際にphpファイルにで呼び出すとき、下記のように書くことができます。

require_once("Cache/Lite.php");

理屈としては、includeやrequire時に、最初にinclude_pathで指定したところを参照し、ファイルがなければ次のパスを参照するようになるので、これは当然Cache_Lite以外のファイルをrequireする時でも同様になります。
(ただし絶対パス、相対パスを指定した場合は include_path は無視されます。詳しくはこちらの記事を参照。

よって、下記のように書いても、同じことです。
include_path=".:/home/ユーザーID"
require_once("pear/PEAR/Cache/Lite.php");


実際に使う 
require_once('Cache/Lite.php'); 
//キャッシュ設定情報
$r_cacheOptions = array(
  'cacheDir' =>'./cache_r/', //キャッシュ保存フォルダ
  'lifeTime'=> 7200, //キャッシュ保持期間 単位は秒
  'automaticCleaningFactor' => 60 //キャッシュファイルの削除確率らしい 推奨20~200
  );
//キャッシュ初期設定
$r_cacheId = $r_rand_cache; //$cacheId指定
$r_cache_lite = new Cache_Lite($r_cacheOptions);
//キャッシュがあればキャッシュを取得、なければAPIへリクエスト
if($r_cache = $r_cache_lite ->get($r_cacheId)){
	$r_lscosBuff = $r_cache;
} else {
	$r_lscosBuff = @file_get_contents($r_url);
	$r_cache_lite ->save($r_lscosBuff,$r_cacheId); // XMLをキャシュへ保存
}
実際に使うときはだいたい上記のような感じになります。
詳しい説明は、いろいろなサイトに記載されていますので、調べればでてくると思います。

オマケ 
試しに、とあるhtmlページをまるごとキャシュして、テキストエディタで開こうとすると、「1行に32768バイト以上の文字列を含むファイル」として、エラーになりました。 別のテキストエディタではファイルが開けましたが、途中で切れていました。
32768.png

キャシュファイルは、改行のない1行のデータになるため、当たり前なのかもしれませんが、
もっと大きなデータを扱う場合は、Cache_Lite以外の技術も合わせて使用する方が望ましいのでしょう。

今回は、備忘録も兼ねてCache_Liteのインストール方法を記事にしてみました。
それでは良きCacheライフ?をお送りくださいませ。


2014年07月28日 に更新・修正した内容

コメントから、風柳さんより、go-pear.phpをエラーなく動作させるようにする修正方法を教えて頂きましたので、リンクしておきます。

Share SocialMedia

Related

Comment(2)

風柳さん ━  2014年05月03日 23:01

はじめまして。

自分も、最近「2.go-pear.phpを使う方法」を試したところ、インストールが途中(21%)で停止してしまうので困りました。以前は問題なくできていたはずなのですが。

そこで、少し調べてみたところ、go-pear.php の不具合が見つかったため、修正版を作ってみました。
記事にしてありますので、よろしければ参照してみてください。
http://d.hatena.ne.jp/furyu-tei/20140501/1398940857

Jun'ya Hiranoさん ━  2014年05月04日 0:53

>風柳さん

おおお、これはタイムリーですね。ありがとうございます!
追記しておきます!

名前(ニックネーム)
コメントを書く

TrackBackこの記事を論及・引用、関連記事にして頂けたらありがたき幸せ。

PageTop

Search

Categoryを絞り込んで検索

Category

Calendar

show

Archive

AFFINGER4

Popularities

賢威
×