プロジェクトごとに外部ライブラリ格納場所を準備する

例えば PEAR の場合だと、Linux のパッケージによる導入を行った場合などは /usr/share/pear, Windows 環境などでは PHP 実行環境直下の pear ディレクトリといった具合にグローバルなスペースにライブラリが格納されます。php.ini による include_path の設定もこのグローバルなスペースを指定しているので、皆さんが使用、もしくは開発している Web アプリケーションにおいても、この一箇所にまとめられているライブラリを利用しているかと思います。

これらライブラリを更新する場合、この一箇所を変更するだけで全ての Web アプリケーションが Ver.UP されることになるため効率がよいその一方で、全てに影響するとあってそうあっさりと更新ができない場合があったり、権限の問題で簡単に書き換えることができない(そもそも権限がない)、また Web アプリケーションそのものがサーバの環境や状態に依存してしまうものとなってしまいます。

そこ私はタイトルにあるように、プロジェクトごとに外部ライブラリ格納場所を準備することで、プロジェクト単位で PEAR ライブラリを個別管理するようにしています。開発および稼動後の運用を行う上もなかなか便利でよい方法だと思うので簡単に紹介します。

なお以下に紹介する方法は、自身の開発環境に PHP および PEAR が既に導入されていることを前提としています。PHP は 4, 5 問いません。また PEAR はインストーラが実行できる環境、すなわち PEAR Core と依存するパッケージのみで動作します。

まずプロジェクト用ディレクトリ以下に、そのプロジェクトに応じたツリーを構成するのとあわせて外部ライブラリ格納用ディレクトリを作ります。例えば以下のような感じ。ここでは /path/to/Project/imports が外部ライブラリ格納用ディレクトリです。PEAR ライブラリはこの imports 以下に pear ディレクトリを作成し、この内部にインストールしていくようにします。

- Project
 - imports   外部ライブラリ格納用ディレクトリ
  - pear    PEARディレクトリ
 - web
  - content-A
   - htdocs  コンテンツA用ドキュメントルート
   - webapp  コンテンツA用Webアプリケーション
  - content-B
   - htdocs  コンテンツB用ドキュメントルート
   - webapp  コンテンツB用Webアプリケーション

実際に pear ディレクトリへ PEAR ライブラリを導入するための準備、および実行を行っていきます。
まずは imports ディレクトリへ移動し、pear config-create コマンドを使用してディレクトリ情報の設定ファイルを作成します。

  $ cd /path/to/Project/imports
  $ pear config-create `pwd` .pearrc

ちなみに pear config-create コマンドで指定することのできるディレクトリ情報はルートからのパスである必要があるらしく、./ といった形で指定することができません。

作成された設定ファイルは、-c オプションを使用して pear コマンドを実行すれば指定することができます。以下のコマンドで設定内容を確認することができます。ディレクトリ情報以外は、PEAR インストーラの初期設定値が適応されます。

  $ pear -c .pearrc config-show

余談ですが、PEARインストーラにて発生するテンポラリなファイル群がプロジェクト内に貯まっていくのは本意ではないため、以下のように微妙に変更することもオススメです。

  $ pear -c .pearrc config-set cache_dir     /tmp/pear/cache
  $ pear -c .pearrc config-set download_dir  /tmp/pear/cache
  $ pear -c .pearrc config-set temp_dir      /tmp/pear/temp

以後は -c オプションを付与しながら PEAR ライブラリをどんどん導入していきます。手始めに PEAR 本体をば。

  $ pear -c .pearrc channel-update pear.php.net   (これは始めだけ)
  $ pear -c .pearrc install pear/PEAR

 

一方、Web アプリケーション側では、この PEAR ディレクトリをメインの include_path として設定するようにします。例えば、htdocs 内にある PHP ファイルの先頭で以下のように設定します。アプリケーションの設置場所(ローカル、テスト環境、本番環境)に依存しないよう、相対パスで指定するようにします。

  ini_set('include_path',
          dirname(__FILE__) . '/../../../imports/pear' . PATH_SEPARATOR .
          get_include_path()
          );


あとは Project ディレクトリ単位で開発し、rsync などによるコピーも Project ディレクトリ丸々行うようにします。リバーシブルなメディアに Project ディレクトリと Apache の VirtualHost 情報を含めて他の環境に持っていっても動作させることができます。
ソースコード管理のリポジトリも当然ながら Project ディレクトリから。すなわち、imports ディレクトリも管理内となるわけです。

なお、.pearrc 設定ファイルの内容だけはルートからのパスが含まれ環境に依存する情報となるため、ソースコード管理外になるようにするのも良いでしょう。subversion ならば以下のように ignore 設定を行います。

  $ cd /path/to/imports
  $ svn propset svn:ignore ".pearrc" .

トラックバック(0)

このブログ記事を参照しているブログ一覧: プロジェクトごとに外部ライブラリ格納場所を準備する

このブログ記事に対するトラックバックURL: http://hatotech.org/mt-admin/mt-tb.cgi/692

コメントする

このブログ記事について

このページは、が2007年9月21日 14:22に書いたブログ記事です。

ひとつ前のブログ記事は「ドラゴンフルーツ」です。

次のブログ記事は「SFC版グラディウスIII」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01