2010年2月22日月曜日

[PHP][Symfony]: Symfonyプロジェクト内にSymfonyライブラリを含める

require_once dirname(__FILE__).'/../lib/vendor/symfony/autoload/sfCoreAutoload.class.php';
多数のSymfonyプロジェクトを扱っていて困るのは、既にリリースして安定稼働中のSymfonyプロジェクトと、新規で開発するSymfonyのバージョンが異なるというケースだ。
一応Symfony公式ページではupdate方法も書かれているが、安定稼働中の本番サイトのバージョンアップはやはりリスクが大きい。
なので、バージョンの違うSymfonyを共存させる方法を書いておく。

基本的にはSymfonyのライブラリディレクトリを丸ごとプロジェクトディレクトリ内(SF_ROOT以下のどこか)にコピーし、コンフィグファイルにそのディレクトリを指定してやれば良い。

古いバージョンのSymfonyだと、config/config.phpというファイルがあり、ここにSymfonyのパスを指定するようになっている。これを「dirname(__FILE__)."/../pear/symfony"」などに変えてやれば良い。

$ cat config/config.php
<?php

// symfony directories
$sf_symfony_lib_dir = '/usr/local/lib/php/symfony';
$sf_symfony_data_dir = '/usr/local/lib/php/data/symfony';
最近のバージョンの場合は、config/ProjectConfiguration.class.phpというファイルに設定があるので、最初にあるinclude行を

require_once dirname(__FILE__).'/../lib/vendor/symfony/autoload/sfCoreAutoload.class.php';

といった形で書きかえる。これでプロジェクトを丸ごと他のサーバに移動したときなども、問題なくSymfonyごと移行することができる。

0 件のコメント:

コメントを投稿