at_yasu's blog

ロード的なことを

pear をローカルディレクトリにインストール

pear -c で、どうも環境を汚さずに pear のパッケージを入れることができるみたいなので、やってみたメモ。


参考: http://sourceforge.jp/projects/risoluto/lists/archive/svn/2011-April/000027.html


pearrc の作成

これが無いと話しにならない気配。ただ、これはマシンが変わったり、パス変わったりすると楽しいことになる気配だから、いちいち作業ディレクトリ?プロジェクト毎に作る気配。

$ pear config-create `pwd` ./.pearrc

Channel の登録

配信サーバの登録。Apacheの log4php が無いと私が泣きそうなので、標準のと同時に登録します。

$ pear -c ./.pearrc channel-update pear.php.net
$ pear channel-discover pear.apache.org/log4php

インストールとinclude path


適当なものでもインストール。よく使う、HTTP::Request2 と log4phpを。

$ pear -c .pearrc install pear/HTTP_Request2
downloading HTTP_Request2-2.0.0.tgz ...
Starting to download HTTP_Request2-2.0.0.tgz (97,476 bytes)
......................done: 97,476 bytes
downloading Net_URL2-2.0.0.tgz ...
Starting to download Net_URL2-2.0.0.tgz (11,325 bytes)
...done: 11,325 bytes
install ok: channel://pear.php.net/Net_URL2-2.0.0
install ok: channel://pear.php.net/HTTP_Request2-2.0.0
$ pear -c .pearrc install log4php/Apache_log4php
..


インストールをすると、作業ディレクトリに「pear」というディレクトリができます。その中には「cache, data, docs, download, php, temp, tests」とあって、なにがなんだかわかりません。

それで欲しいのは pear/php の中に詰まってるので、include_path を下のように設定したらいいと思います。

<?php
    $lib_array = array_map('__abspath__', array("pear/php"));
    $libs = join(PATH_SEPARATOR, $lib_array);
    set_include_path(get_include_path() . PATH_SEPARATOR . $libs);
    require_once("log4php/Logger.php");
    Logger::configure(ROOT_DIR . 'log4php.xml');


まぁ、そんな感じ。