tohokuaikiのチラシの裏

技術的ネタとか。

PEARのConfigを再構築する

PEAR-localを使ってたのだけど、環境が変わってしまったためにpearコマンドが使えなくなった場合。

http://wiki.poyo.jp/read/PHP/tips/pear/pear/rebuild_confから

<?php
define('PHP_PEAR_INSTALL_DIR',  'PEAR-localのインストールディレクトリ');
define('PHP_PEAR_SYSCONF_DIR',  PHP_PEAR_INSTALL_DIR.'cfg/');
define('PHP_PEAR_SYSCONF_PATH', PHP_PEAR_SYSCONF_DIR.'pear.conf');
define('PHP_PEAR_TMP_DIR',      PHP_PEAR_INSTALL_DIR.'tmp/pear/');

ini_set('include_path', PHP_PEAR_INSTALL_DIR);

require_once "PEAR/Config.php";
$obj = &new PEAR_Config(PHP_PEAR_SYSCONF_PATH, PHP_PEAR_SYSCONF_PATH.'-dist');
$obj->removeLayer('user');;
$result = $obj->mergeConfigFile(DF_PATH_PEAR_CONFIG.'-dist', true, 'user');
if (PEAR::isError($result)) {
    echo "Reading the configlation file failed.\n";
} else {
    echo "Reading the configlation file successed.\n";
}

$obj->set('bin_dir',      PHP_PEAR_INSTALL_DIR.'bin/');
$obj->set('doc_dir',      PHP_PEAR_INSTALL_DIR.'docs/');
$obj->set('data_dir',     PHP_PEAR_INSTALL_DIR.'data/');
$obj->set('php_dir',      PHP_PEAR_INSTALL_DIR);
$obj->set('test_dir',     PHP_PEAR_INSTALL_DIR.'tests/');
$obj->set('cache_dir',    PHP_PEAR_TMP_DIR.'cache/');
$obj->set('temp_dir',     PHP_PEAR_TMP_DIR);
$obj->set('download_dir', PHP_PEAR_TMP_DIR.'download/');

echo "New settings:\n";
foreach ($obj->getKeys() as $key) {
    echo "$key: ".var_dump($obj->get($key));
}
echo "\n\n";

$result = $obj->store('user');
if (PEAR::isError($result)) {
    echo "Writing the configuration file failed.\n";
 } else {
    echo "Writing the configuration file successed.\n";
}

を作って、PHPで実行。

すると、PHP_PEAR_SYSCONF_PATHにファイルができてる。

これを、ユーザーのホームディレクトリに移動。

あるいは、

$set PHP_PEAR_SYSCONF_DIR = PHP_PEAR_SYSCONF_PATH
$export PHP_PEAR_SYSCONF_DIR = PHP_PEAR_SYSCONF_PATH