11 August 2008

(PHP) レンタルサーバでPEARをユーザディレクトリにインストール

レンタルサーバでroot権限が無い場合などで、利用したいPEARのパッケージが標準でインストールされていない場合の回避方法として、ユーザディレクトリにPEARをインストールしてしまうという方法がある。

大まかな流れは、PEARの公式ヘルプに書かれているが…  例えば、この記事を格納しているレンタルサーバでは微妙に違う挙動になっている。
おそらく
 PEARの公式ガイド → Linux
 このサーバ → FreeBSD
という辺りが原因なのだろう。

ユーザのホームディレクトリで、次のようにインストール作業を行う

%pear config-create /home/USER_HOME/pear .pearrc Configuration (channel pear.php.net): ===================================== Auto-discover new Channels auto_discover <not set> Default Channel default_channel pear.php.net HTTP Proxy Server Address http_proxy <not set> PEAR server [DEPRECATED] master_server <not set> Default Channel Mirror preferred_mirror <not set> Remote Configuration File remote_config <not set> PEAR executables directory bin_dir /home/USER_HOME/pear/pear PEAR documentation directory doc_dir /home/USER_HOME/pear/pear/docs PHP extension directory ext_dir /home/USER_HOME/pear/pear/ext PEAR directory php_dir /home/USER_HOME/pear/pear/php PEAR Installer cache directory cache_dir /home/USER_HOME/pear/pear/cache PEAR configuration file cfg_dir /home/USER_HOME/pear/pear/cfg directory PEAR data directory data_dir /home/USER_HOME/pear/pear/data PEAR Installer download download_dir /home/USER_HOME/pear/pear/download directory PHP CLI/CGI binary php_bin <not set> php.ini location php_ini <not set> PEAR Installer temp directory temp_dir /home/USER_HOME/pear/pear/temp PEAR test directory test_dir /home/USER_HOME/pear/pear/tests PEAR www files directory www_dir /home/USER_HOME/pear/pear/www Cache TimeToLive cache_ttl <not set> Preferred Package State preferred_state <not set> Unix file mask umask <not set> Debug Log Level verbose <not set> PEAR password (for password <not set> maintainers) Signature Handling Program sig_bin <not set> Signature Key Directory sig_keydir <not set> Signature Key Id sig_keyid <not set> Package Signature Type sig_type <not set> PEAR username (for username <not set> maintainers) User Configuration File Filename /home/USER_HOME/.pearrc System Configuration File Filename #no#system#config# Successfully created default configuration file "/home/USER_HOME/.pearrc" %pear list Installed packages, channel pear.php.net: ========================================= Package Version State Archive_Tar 1.3.2 stable Console_Getopt 1.2.3 stable PEAR 1.7.2 stable Structures_Graph 1.0.2 stable %pear install DB WARNING: "pear/DB" is deprecated in favor of "pear/MDB2" WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update downloading DB-1.7.13.tgz ... Starting to download DB-1.7.13.tgz (132,246 bytes) ......................done: 132,246 bytes install ok: channel://pear.php.net/DB-1.7.13


そして、PHPのソースコードの先頭には、次のようにインクルード文の標準ディレクトリを指定する。

<?php # use user's home directory PEAR ini_set('include_path', '/home/USER_HOME/pear/pear/php' . PATH_SEPARATOR . ini_get('include_path')); # use PEAR Auth package require_once("Auth/Auth.php");

なお、PEARの実行環境へのパスを.cshrcに付加しておく

$HOME/.cshrc
set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X 11R6/bin $HOME/bin $HOME/pear/pear)