はじめに

どのように FuelPHP をアップグレードするかは、あなたのプロジェクトがどのように FuelPHP を利用しているかによって異なります。

すべての場合で、あなたが core ファイル群には修正を加えておらず、 core の機能を拡張した場合は app/classes にクラスを作成し、 またデフォルトの設定を変更したい場合は app/config に設定ファイルをコピーした上で修正していると仮定しています。

単に zip ファイルをダウンロードしてインストールした場合

この手段を選択した場合、アップグレードするバージョンによって異なります。

1.7.1 以降のバージョンからアップグレードする場合は、 fuel/fuel リポジトリまたは最新の zip ファイルのいずれかから oilpublic/index.phpcomposer.json を手動で更新することで composer を利用してアップグレードすることができます。

$ php composer.phar self-update
$ php composer.phar update --prefer-dist
アプリケーションのフォルダ構造のルートから上記を実行することができます。

1.7.1 以前のバージョンからアップグレードしなければならない場合は、以下のフォルダを手動で削除する必要があります:

$ rm -rf fuel/core/ docs/
$ rm -rf fuel/packages/auth/ fuel/packages/email/ fuel/packages/oil/
$ rm -rf fuel/packages/orm/ fuel/packages/parser/ fuel/vendor/
もし、最近のバージョンを使用していて、 composer を利用して直接アップデートして composer エラーが発生した場合は、 上記のような composer のアップデートコマンドを実行する前にこれらのフォルダを削除すると 再度アップグレードすることができます。

プロジェクトがフレームワークも含んだ独自のリポジトリを持っている場合

作業的には同じです。zip ファイルをダウンロードして置き換えて下さい。 リポジトリを持つことは、その中で作業をすることで diff を見ることができ、 必要な場合にチェンジログを用いて修正を行う作業を楽にしてくれることでしょう。

Note もしまだ Subversion を使っている場合は、 .svn 隠しディレクトリに注意して下さい。ファイルを入れ替える時に .svn ディレクトリを削除してはいけません。

プロジェクトが独自のリポジトリを持っていて、FuelPHP のリポジトリのサブモジュールを使っている場合

もしあなたがサブモジュールを手動で作っている場合は、それがどのように動作し、どうすればアップデートできるのかすでに知っているでしょう。 fuel/fuel リポジトリから clone を行うことで開始していた場合は、上流リポジトリとして追加して、新バージョンの master ブランチを pull して下さい。 マージに関する問題に対処したら、 'git submodule update' コマンドを実行してサブモジュールをリリースバージョンに更新します。

Note サブモジュールを削除し、composer を使用してフレームワークコンポーネントをアップデートすることを強くお勧めします!

プロジェクトが独自のリポジトリを持っているが、FuelPHP コンポーネントには別のリポジトリを持っている場合

それらのリポジトリがすべてあなたの作ったものであれば、 FuelPHP のリポジトリを上流のリモートリポジトリとして追加し、そこからリリースブランチを pull してファイルを更新します。 その後あなたのリポジトリに対して push を行いアップデートを完了します。 もし FuelPHP のリポジトリを直接使っているなら、単にブランチを切り替えるだけで済みます。 FuelPHP のファイルがあなたのアプリリポジトリに含まれているのなら、この変更をアプリリポジトリにも push してアップデートは完了です。

おそらくもっとたくさんのシナリオがあり得るでしょう。 ここで言及する価値があると思われるケースを知っていたら、どうぞこのページに対する pull request を送って下さい。

ところでアプリケーションそのものは?

新バージョンがリリースされる時にはほとんどの場合、FuelPHP リポジトリに多くの変更があり、それはあなたのアプリケーション (つまり app フォルダの中のすべてのファイル) にも影響を及ぼします。 アプリケーションを作成する時に app フォルダに大幅に変更を加えたとして、ここで少し注意する必要があります。 それは潜在的に以下の 3 つのことが変更されてるかもしれません:

public ディレクトリの index.php

index.php は FuelPHP フレームワークの不可欠の部分であり、環境を構築しフレームワークそのものを起動する役目を持ちます。 新しい FuelPHP のバージョンにアップデートする場合は、忘れずに index.php を fuel/fuel リポジトリから更新して下さい。 もし index.php に変更を加えていた場合は、更新した新しい index.php にも同様の変更を行うのを忘れずに!

public ディレクトリに含まれる asset ファイル

public/assets に含まれるファイルは FuelPHP にとって最重要ではありませんが、 Oil パッケージによって生成される管理用ページに使用される Twitter Bootstrap のファイルが含まれています。 Twitter Bootstrap の新バージョンが使われた場合は、フレームワークでの使用方法の変更点が紹介されますので、 生成された管理ページのマークアップを確認し、それが新しいバージョンの Bootstrap で動作することをチェックする必要があります。

含まれるその他のファイル

その他のファイルをアップグレードする必要があるかもしれません。 もしそれらを変更していない場合は、新しいバージョンに置き換えて問題にぶつからないようにしてください。

oil - 'Oil' bootstrap スクリプト、 .htaccess と PHPUnit に必要なファイル

app/config/config.php - "There is no security.output_filter defined" というエラーが表示されることがあります。
現在の config ファイルに最新版から "security" 配列部分をコピーして上書きしてください。

app/bootstrap.php - "Load in the Autoloader" (lines 3-6) がまだ記述されている場合は、それらを削除する必要があります。
これは "Cannot declare class Fuel\Core\Autoloader, because the name is already in use" というエラーの原因です。

上流リポジトリを使う

リポジトリを管理するために git を使っている場合は、fuel/fuel リポジトリをあなたの上流リポジトリとして使うことができます。 そうするとアップデートを簡単になります。 FuelPHP のコアコンポーネント毎に別々のリポジトリを使っている場合でも同様にできます。 この方法は、新バージョンにアップデートする際に多くの時間を節約してくれることでしょう。