システム共有としてインストールされた PEAR にアクセスできるプロバイダを使っているユーザもいるでしょう。 しかし、PEAR のローカルコピーを作成すると、 共有インストールされていないパッケージを使いたい場合など、多くの場面で便利です。 ここでは、telnet/ssh によるシェルアクセスを使ったローカルコピーの作成方法と、 ftp アクセスだけを使った方法とについて説明します。
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 を使って PEAR のローカルコピーをインストールする方法は、昔ながらの難しい方法と、 新しく簡単な方法の 2 つがあります。新しい方法を行うには、 PEAR をバージョン 1.4.3 以降にアップグレードする必要があります。
PEAR 1.4.3 以降では、FTP を使ったローカルコピーのインストールも簡単に行えます。
シェルアクセスができないリモ-トホストに PEAR をインストールしたいというユーザもいるでしょう。 FTP を使うのが唯一の選択肢だということも良くあることですが、手動でインストールすると 置換などのインストーラの機能を活用している複雑なパッケージで問題が起こります。
〔FTP を使ってリモ-トホストに〕適切にインストールするには 次の手順で行います。
ローカルのコンピュータに PHP 5.0 以降をインストールする
ftps を使用する場合は、 php.ini で openssl 拡張モジュールを有効にする
sftp を使用する場合は、 php.ini で ssh2 拡張モジュールを有効にする
PEAR の CLI バージョン ("pear" コマンドのこと。ウェブインターフェイスではない) をローカルのコンピュータにインストールし、正常動作を確認する
リモートホストにアクセスでき、書き込みができるようにする (セキュリティ上、ftp でなく sftp か ftps の使用を 強く 推奨します)
ホームディレクトリのフルパスを確認する
ローカルとリモートの双方について、それぞれの環境に対応した設定ファイルを作成する
リモートの設定ファイルをリモートホストにアップロードする
リモートホストの設定ファイルの場所を ローカルの設定ファイルの remote_config に指定する
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 クライアントが必要です。 まず、サーバの、ウェブに公開されていない場所にディレクトリをひとつ作成し、 好きな名前をつけます。そして、全ユーザから読み書き可能 (0777) とします。 http://pear.php.net/go-pear をダウンロードし、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()); ?> |