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)