共有ホストでの 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());
?>
PEAR パッケージマネージャの取得とインストール (Previous) Checking if PEAR works (Next)
Last updated: Sun, 23 Nov 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: barbs
I get 'config-set: only the layers: "user" or "system" are supported' when running the command "pear -c remote.ini config-set remote_config \ ftp://user:pass@myhost.com/.pearrc"

What does that mean?
Note by: gronf
The instruction

"download a copy of http://pear.php.net/go-pear.phar and save it as go-pear.php"

is not working. I only get a lot of errors in function.unserialize and function.unpack.
Note by: christian@stadegaart.name
I ran into a problem when running 'pear install -o PEAR' for a shared installation via SSH.

The server's PEAR version is 1.7.1. When running 'pear install -o PEAR' dependencies are installed as well. But an issue rises when one of these dependencies require a higher PEAR version than the version your remote server is running.

In my case Console_Getopt 1.3.1 is being installed because Console_Getopt is a dependency of PEAR. But this won't work, since Console_Getopt 1.3.1 needs PEAR 1.8.0 or newer.

To make this work, first install a lower version of the dependency which supports your server's PEAR version, in my case Console_Getopt 1.2.3. The command for this is 'pear install Console_Getopt-1.2.3'. After that 'pear install -o PEAR' works fine. After the PEAR user installation, I upgraded Console_Getopt manually, because my own PEAR copy is 1.9.4 and not 1.7.1.

Also make sure you run 'pear update-channels' after you created .pearrc.
Note by: adcomitus (whatever) gmail
Hy.
I had some troubles installing 'HTML_templates_sigma' trough FTP. Here is the additional steps I had to take:

In step 5, where it states (for Unix) '$ pear config-create /home/username/pear .pearrc', I removed the '/pear'. This will create a 'pear' folder inside your '/username/pear' folder. KISS.

Add the 'php' folder in 'pear' on the remote server to the include path. Something like 'set_include_path( get_include_path() . PATH_SEPARATOR . PATH_SEPARATOR . '/(relative-path-to-your-remote-pear-folder/php');' in my script;

I could not simply use remote-install. I saw this in a German forum (luckily the code was in a box!):
'pear -c remote.conf remote-install --onlyreqdeps HTML_Template_Sigma'
I had to add pear complete path of pear and remote.conf (i.e., './remote.conf'), but I'm guessing that's just my Linux distro.

I don't really know much about this, so I don't know how much of this is really needed for everybody, and how much was only from my own specific case. But maybe it will help someone else.
Be well.

Note by: james
'go pear' is actually at http://pear.php.net/go-pear
Note by: alexandre.grivel@computershop.ch
Il faudrai corrigé ces deux lignes qui se trouve dans:

Installer une copie locale de PEAR via ftp, ftps ou sftp:

1) 3. Notez le !chemon! complet vers votre dossier utilisateur.

2) Voici les séquences !nécessiare! pour que cela fonctionne. :