フレームワークを使ってアプリケーションを開発しているとき、PEARのローカルコピーを、vendorディレクトリなどサードパーティーライブラリを格納するディレクトリにインストールしたくなりません?
Symfony2.3の場合だと、composerでうまくインストールできるのかもしれませんが…
よくわからなかったので力技で。
以下、Symfony 2.3 / Cent OS上での手順をメモしました。
Symfony2のインストールディレクトリ
/home/webuser/symfony
pearのインストールディレクトリ
/home/webuser/symfony/vendor/pear/
pearのローカル設定ファイル
/home/webuser/symfony/app/.pearrc
# PEARの設定ファイルを作成
pear config-create /home/webuser/symfony/app/ /home/webuser/symfony/app/.pearrc
# vendor下にpearがインストールされるよう、設定を変更
pear -c /home/webuser/symfony/app/.pearrc config-set bin_dir /home/webuser/symfony/vendor/pear
pear -c /home/webuser/symfony/app/.pearrc config-set doc_dir /home/webuser/symfony/vendor/pear/docs
pear -c /home/webuser/symfony/app/.pearrc config-set ext_dir /home/webuser/symfony/vendor/pear/ext
pear -c /home/webuser/symfony/app/.pearrc config-set php_dir /home/webuser/symfony/vendor/pear/php
pear -c /home/webuser/symfony/app/.pearrc config-set cache_dir /home/webuser/symfony/vendor/pear/cache
pear -c /home/webuser/symfony/app/.pearrc config-set cfg_dir /home/webuser/symfony/vendor/pear/cfg
pear -c /home/webuser/symfony/app/.pearrc config-set data_dir /home/webuser/symfony/vendor/pear/data
pear -c /home/webuser/symfony/app/.pearrc config-set download_dir /home/webuser/symfony/vendor/pear/download
pear -c /home/webuser/symfony/app/.pearrc config-set temp_dir /home/webuser/symfony/vendor/pear/temp
pear -c /home/webuser/symfony/app/.pearrc config-set test_dir /home/webuser/symfony/vendor/pear/tests
pear -c /home/webuser/symfony/app/.pearrc config-set www_dir /home/webuser/symfony/vendor/pear/www
# 設定を確認
pear -c /home/webuser/symfony/app/.pearrc config-show
これで準備が完了です。
ライブラリをインストールするときは、今回作成したローカル設定ファイルとともにコマンドを実行します。
たとえば、 AWS SDK2 for PHPを使ってS3にファイルをアップロードする ためにaws/sdkをインストールします。
# 必要なチャネルを登録
pear -c /home/webuser/symfony/app/.pearrc channel-discover pear.amazonwebservices.com
pear -c /home/webuser/symfony/app/.pearrc channel-discover guzzlephp.org/pear
pear -c /home/webuser/symfony/app/.pearrc channel-discover pear.symfony.com
# インストール
pear -c /home/webuser/symfony/app/.pearrc install aws/sdk
次に、Symfony2からこのライブラリを利用できるよう、include_pathを追加します。
※標準の設定ファイルでインストールされたPEARライブラリが既にある場合、include_pathに注意してください。include_pathに既存のPEARライブラリが配置されたディレクトリが登録されていると、二重に読み込まれることがあります。
autoload.php
<?php
// 追記
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/../vendor/pear/php');