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

システム共有としてインストールされた PEAR にアクセスできるプロバイダを使っているユーザもいるでしょう。 しかし、PEAR のローカルコピーを作成すると、 共有インストールされていないパッケージを使いたい場合など、多くの場面で便利です。 ここでは、telnet/ssh によるシェルアクセスを使ったローカルコピーの作成方法と、 ftp アクセスだけを使った方法とについて説明します。

SSH を使ったインストール

SSH を使って PEAR のローカルコピーをインストールするには、 次のコマンドを使用します。

次の手順は PEAR 1.4 以降を対象としたものです。古いバージョンの PEAR を使っている場合は すぐにアップグレードしましょう

      
$ pear config-create /home/user/pear .pearrc
      
     

ホームディレクトリに .pearrc という名称のローカル設定ファイルが作成されます。

そのあと .bashrc(または他のスタートアップファイル)にて ~/pear/bin をパスに追加し、次のコマンドを実行します。

      
$ pear install -o PEAR
      
     

ホームディレクトリ下の pear という名称のサブディレクトリが作られ、 そこにあなたがインストールしたパッケージが保存されます。 システム共有版とは別に、PEAR のローカル版がインストールされます。 このローカルにインストールされたファイルを使用するには、PEAR パッケージを使うコードで PHP の include_path を次のようにセットしてください。

<?php
ini_set
('include_path''~/pear/lib' PATH_SEPARATOR
        
ini_get('include_path'));

// PHP 4.3.0 以降ではこの方法も使用できます。
// これは、特に共有ホストなどで有用です。
set_include_path('~/pear/lib' PATH_SEPARATOR
                 
get_include_path());
?>

または、apache の .htaccess ファイルで php_value を使う方法もあります。

ftp/ftps/sftp を使ったローカルコピーのインストール

FTP を使って PEAR のローカルコピーをインストールする方法は、昔ながらの難しい方法と、 新しく簡単な方法の 2 つがあります。新しい方法を行うには、 PEAR をバージョン 1.4.3 以降にアップグレードする必要があります。

PEAR 1.4.3 以降と PEAR_RemoteInstaller を使う改良インストール法

PEAR 1.4.3 以降では、FTP を使ったローカルコピーのインストールも簡単に行えます。

シェルアクセスができないリモ-トホストに PEAR をインストールしたいというユーザもいるでしょう。 FTP を使うのが唯一の選択肢だということも良くあることですが、手動でインストールすると 置換などのインストーラの機能を活用している複雑なパッケージで問題が起こります。

〔FTP を使ってリモ-トホストに〕適切にインストールするには 次の手順で行います。

  1. ローカルのコンピュータに PHP 5.0 以降をインストールする

  2. ftps を使用する場合は、 php.ini で openssl 拡張モジュールを有効にする

  3. sftp を使用する場合は、 php.ini で ssh2 拡張モジュールを有効にする

  4. PEAR の CLI バージョン ("pear" コマンドのこと。ウェブインターフェイスではない) をローカルのコンピュータにインストールし、正常動作を確認する

  5. リモートホストにアクセスでき、書き込みができるようにする (セキュリティ上、ftp でなく sftp か ftps の使用を 強く 推奨します)

  6. ホームディレクトリのフルパスを確認する

  7. ローカルとリモートの双方について、それぞれの環境に対応した設定ファイルを作成する

  8. リモートの設定ファイルをリモートホストにアップロードする

  9. リモートホストの設定ファイルの場所を ローカルの設定ファイルの remote_config に指定する

  10. remote-install, remote-uninstall, remote-upgrade および remote-upgrade-all コマンドを使ってパッケージを管理する

1. PEAR の CLI バージョン ("pear" コマンド。ウェブインターフェイスではありません) をローカルのコンピュータにインストールする

こちらで インストール手順 を参照してください。

2. PEAR_RemoteInstaller パッケージがローカルにインストールされていなければ、 インストールする

3. リモートホストに対して ftp でアクセスでき、ftp で書き込めるようにする

書かれている通りです。DOS プロンプトや Unix シェルで FTP コマンドを実行できれば、 FTP 接続が可能です。

ログインに必要なユーザ名とパスワードを入力します。

書き込みができるか調べるのは簡単です。ファイルをアップロードすることができれば、 書き込み権限があります。

4. ホームディレクトリのフルパスを確認する

これも書かれている通りです。次のスクリプトを WEB ドキュメントのルートティレクトリに アップロードし出力を確認すると良いでしょう。


<?php
echo dirname(__FILE__);
?>

/home/username/htdocs/home/username/public_html のようになるでしょう。FTP でアクセスする際には、 /home/username へ接続するとよいでしょう。

5. ローカルとリモートの双方について、それぞれの環境に対応した設定ファイルを作成する

これも簡単です。windows と unix でそれぞれ次のようにします。

まず、Windows です。

リモートコードのローカルコピーを保存する場所を選びます。たとえば、 C:\remote\pear とします。コマンドプロンプトから (スタートメニュー => プログラム から「コマンドプロンプト」を探します)、 次のように打ち込みます。

       
C:\> mkdir remote
C:\> cd remote
C:\remote\> mkdir pear
C:\remote\> cd pear
C:\remote\pear> pear config-create -w C:\remote\pear remote.ini
C:\remote\pear> pear config-create /home/username/pear .pearrc
       

Unix でも、似たような手順をとります。

       
$ cd
$ mkdir remote
$ cd remote
$ mkdir pear
$ cd pear
$ pear config-create /home/mylocaluser remote.conf
$ pear config-create /home/username/pear .pearrc
       

6. リモートの設定ファイルをリモートホストにアップロードする

これも簡単です。どちらの OS でも FTP を使って .pearrc/home/username/pear/.pearrc へアップロードします。

7. リモートホストの設定ファイルの場所を ローカルの設定ファイルの remote_config に指定する

暗号化を行わないなら(注:ただし、安全ではない)、 ストリームとして ftp:// を使います。 ftps を使用するなら、ストリームとして ftps:// を、 sftp を使用するなら、ssh2.sftp を使います。

remote_config に設定するパスは、 次の例のようにフルパスにする必要があります。

       
ssh2.sftp://user:pass@myremotehost.com/home/username/.pearrc
       

これが失敗した場合は、相対パスを試してください。

       
ftps://user:pass@myremotehost.com/.pearrc
       

remote_config の値をセットするには、次の構文を使用します。

windows の場合、

       
C:\remote\pear\> pear -c remote.ini config-set remote_config \
    ftp://user:pass@myremotehost.com/.pearrc
       

Unix の場合、

       
$ pear -c remote.conf config-set remote_config \
    ftp://user:pass@myremotehost.com/.pearrc
       

8. remote-install, remote-uninstall, remote-upgrade および remote-upgrade-all コマンドを使ってパッケージを管理する

以上で、ローカルとリモートのリポジトリを同期させることができます。

動作の詳細

インストーラは、まずパッケージをローカルにインストールし、次いで、 ftp ストリームを使ってローカルにインストールされたファイルをリモートの適切な場所に アップロードします。 "remote_config" 設定項目に指定された リモートの設定ファイルの値を用いて、 パッケージをインストールするべき場所へのフルパスを取得します。 インストールに関連するコマンド (install, uninstall, upgrade, and upgrade-all) にそれぞれ対応した remote- コマンド >(remote-install, remote-uninstall, remote-upgrade, remote-upgrade-all) が存在します。

リモートの設定ファイルは、置換などの特殊処理の際にも参照されます。 たとえば、data_dir 設定項目の値を参照してデータファイルのパスを取得するような ファイルがある場合、リモートホストのパス (/home/username/pear/data) が、ローカルのパス (C:\remote\pear\data) に代わって、使用されます。ただし、このようにしてローカルマシンにインストールされた パッケージはローカルのマシンで適切に動作しません。バックアップとして扱ってください。 非常時には、リモートホストへ ftp や scp でアップロードすることができます。

windows と unix とでインストールのされ方が異なるパッケージがあります。 そのようなパッケージをインストールする場合は、ローカルのシステムをリモートのシステムと 同じものにしてください。さらに、拡張モジュールに依存するパッケージもあります。 リモートのマシンで必要な拡張モジュールが利用可能かどうか調べるには、 phpinfo() の出力を参照してください。

ftp を通じた PEAR のローカルコピーのインストール - 昔ながらの方法

ftp を使用して PEAR のローカルコピーをインストールするには、 アップロード時にファイルのパーミッションを設定できる ftp クライアントが必要です。 まず、サーバの、ウェブに公開されていない場所にディレクトリをひとつ作成し、 好きな名前をつけます。そして、全ユーザから読み書き可能 (0777) とします。 http://pear.php.net/go-pear.phar をダウンロードし、go-pear.php という名前で保存します。go-pear.php を、 ウェブからアクセス可能なディレクトリにアップロードします。 (セキュリティのため) .htaccess を使って go-pear.php を含むディレクトリにパスワード制限をかけるのが良いでしょう。

次に、go-pear.php ファイルをブラウズします。 ウェブアドレスが http://www.example.com/ で、go-pear.php を public_html/install/go-pear.php に置いた場合、 http://www.example.com//install/go-pear.php にアクセスしてください。 表示されたインストールの画面に従います。 どこに PEAR をインストールするか訊かれたら、さきほど作成した 全ユーザから読み書き可能にしたディレクトリを指定します。 また、CLI バージョンの PHP のありかも知らせる必要があります。 PHP のありかは、次のスクリプトの出力を参照してください。

<?php
echo `which php`;
// これが動作しなかった場合は、echo PHP_BIN; を試してください
?>

PEAR がインストールされたら、他の PEAR インストールの方法と同様に、 ウェブ版のインストーラを使って、 パッケージのインストールやアップグレードができます。 インストールされた PEAR のファイルを使うには、ウェブサイトのスクリプト中で インクルードパスを設定する必要があります。

<?php
ini_set
('include_path''~/pear/lib' PATH_SEPARATOR
        
ini_get('include_path'));

// PHP 4.3.0 以降ではこの方法も使用できます。
// これは、特に共有ホストなどで有用です。
set_include_path('~/pear/lib' PATH_SEPARATOR
                 
get_include_path());
?>

レンタルサーバー