westerndogの小屋

westerndogの小屋


- ほしいなぁと思って作ってみたWebサービスたちの開発Blog -

PHPでpear Configを使って配列をiniファイルにする

PHPのparse_ini_file関数を使用するとiniファイルを読み込むことができますが、その逆、配列をiniファイルにする手法を調べたところ、pearのConfigパッケージLink を使用すると楽にできることがわかりました。

準備

すでにpearがインストールされていて、pearへのパスが設定されているなら、パッケージを入れるだけです。

$ sudo pear install Config
Did not download optional dependencies: pear/XML_Parser, pear/XML_Util, use --alldeps to download automatically
pear/Config can optionally use package "pear/XML_Parser"
pear/Config can optionally use package "pear/XML_Util"
downloading Config-1.10.12.tgz ...
Starting to download Config-1.10.12.tgz (32,291 bytes)
.........done: 32,291 bytes
install ok: channel://pear.php.net/Config-1.10.12

Configで、iniファイルからXMLファイルへ、XMLファイルから配列へ、などの処理をしたい場合は、XML_Parserを追加インストールするとそれらの機能を使用できるようになります。今回はiniファイルの読み書きだけなので、スルーします。

iniファイルの書き込みサンプル

writeConfig.php

<?php
require_once ("Config.php");

$conf = array(
    'DB' => array(
        'type' => 'mysql',
        'host' => 'localhost',
        'user' => 'root',
        'pass' => 'root'
     ),
    'TT' => array(
        'encode' => 'sjis',
        'path' => './template'
     )
);

$config = new Config();

// 配列をパース
$root =& $config->parseConfig($conf, 'phparray', array('name' => 'conf'));
if( PEAR::isError( $root ) ) {
  die('配列読み込みエラー: ' . $root->getMessage());
}

// iniファイル書き込み
$root =& $config->writeConfig('conf.ini', 'inifile');
if( PEAR::isError( $root ) ) {
  die('設定書き込みエラー: ' . $root->getMessage());
}
?>

実行例

$ php writeConfig.php
$ cat conf.ini
[DB]
type=mysql
host=localhost
user=root
pass=root
[TT]
encode=sjis
path=./template

iniファイルの読み込みサンプル

parseConfig.php

<?php
require_once ("Config.php");

$config = new Config();

// iniファイル読み込み
$root =& $config->parseConfig('./conf.ini', 'inifile');
if( PEAR::isError( $root ) ) {
  die('設定読み込みエラー: ' . $root->getMessage());
}

// 配列作成
$array = $root->toArray();
print_r($array['root']);
?>

実行例

$ php parseConfig.php
Array
(
    [DB] => Array
        (
            [type] => mysql
            [host] => localhost
            [user] => root
            [pass] => root
        )

    [TT] => Array
        (
            [encode] => sjis
            [path] => ./template
        )

)

Configパッケージの他の使い方は、ConfigマニュアルページLink を参照してください。

— posted by westerndog at 02:06 pm  

さくらインターネットのレンタルサーバにsvnをインストール

さくらのレンタルサーバのプレミアムプランを借りています。SVNをインストールしたので、そのときの記録です。こちらのサイトLink を参考にインストールさせていただきました。

  • サーバOS:FreeBSD 7.1-RELEASE-p15
  • subversion:1.6.16(2011/03/04リリース)
  • インストール

    $ mkdir -p ~/local/src/svn
    $ wget http://subversion.tigris.org/downloads/subversion-1.6.16.tar.gzLink 
    $ wget http://subversion.tigris.org/downloads/subversion-deps-1.6.16.tar.gzLink 
    
    $ tar zxvf subversion-1.6.16.tar.gz
    $ tar zxvf subversion-deps-1.6.16.tar.gz
    
    $ cd subversion-1.6.16
    $ ./configure --prefix=$HOME/local --with-ssl --without-berkeley-db
    $ gmake clean
    $ gmake
    $ gmake install
    

    いままで$HOME/local/binにパスが通っていなかった場合、source .cshrcしてパスを通します。

    $ source .cshrc
    $ svn --version
    svn, version 1.6.16 (r1073529)
       compiled Mar 20 2011, 15:44:38
    
    Copyright (C) 2000-2009 CollabNet.
    Subversion is open source software, see http://subversion.apache.org/Link 
    This product includes software developed by CollabNet (http://www.Collab.Net/Link ).
    

    testリポジトリを作成します。

    $ mkdir -p svn/repos
    $ cd svn/repos/
    $ svnadmin create test
    $ cd ~
    $ mkdir temp
    $ cd temp
    $ svn co file:///home/<ユーザ名>/svn/repos/test test
    Checked out revision 0.
    $ cd test/
    $ svn mkdir trunk branches tags
    A         trunk
    A         branches
    A         tags
    $ svn commit -m "first commit"
    Adding         branches
    Adding         tags
    Adding         trunk
    
    Committed revision 1.
    $ svn list file:///home/<ユーザ名>/svn/repos/test
    branches/
    tags/
    trunk/
    

    インストールを開始して最初のcommitまで、30分程度で完了しました。

    — posted by westerndog at 04:44 pm