案件でCakePHPをバージョンアップする機会があったので、自分なりにまとめてみました。
##ダウンロード
バージョンアップ対象のCakePHPをGitHubよりダウンロードする
##フォルダ・ファイルの確認
CakePHP1.3のフォルダ構成
mywebsite/
app/
controllers/
models/
views/
...
webroot/
cake/
plugins/
vendors/
index.php
※不必要なフォルダ・ファイルがあれば削除してください。
##Upgradeシェル
実行コマンド
./Console/cake upgrade all
確認用コマンド
./Console/cake upgrade all --dry-run
プラグイン含む実行コマンド
./Console/cake upgrade all --plugin YourPluginName
ヘルプ
./Console/cake upgrade --help
1.3から2系へとアップデートを行うにはUpgradeシェルを利用するといいです。
この機能があったので、3系ではなく2系へのアップデートを行う事に決めました。
##アップデート処理
フォルダ構成を以下のように調整してください。
app/index.phpとapp/webroot/index.phpはCakePHP2のものに変更してください。
mywebsite/
app/ ->アプリ
Console/ ->CakePHP2のConsoleフォルダ
controllers/
models/
views/
...
webroot/
index.php
...
app-backup/ ->CakePHP1.3のアプリのバックアップ
cake/ ->CakePHPの1.3バージョン
lib/ ->CakePHPの2.10バージョン
Cake/
plugins/
vendors/
index.php
フォルダ構成の調整が完了しましたら以下のコマンドを実行します。
./Console/cake upgrade all --dry-run
実行をするとアップデートで行われる処理の手順がコンソール画面へ表示されます。
確認を行い問題がない場合は以下のコマンドを実行し、アップデート処理を行います。
./Console/cake upgrade all
※プラグインを含むアップデートを行う場合は、プラグインが2系に対応しているかどうか確認が必要になるので注意してください。
##コマンド実行後
・.htaccessファイルの一部変更
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
↓
RewriteRule ^(.*)$ index.php [QSA,L]
・ファイル移動がうまくいかなかった場合
私の環境ではいくら試してもviewsフォルダのみファイルの移動に失敗しました。
結局ファイル移動と名前(キャメル型)の変更を手動で行うことになりました。
・設定ファイルのマージ
以下の設定ファイルは変更されないので、手動で変更を行ってください。
app/Config/bootstrap.php
app/Config/core.php
app/Config/routes.php
・ソース内調整
作業工程は多い為、別の記事で紹介致します。
##まとめ
作業自体は手順さえ把握していればそんなに時間が掛かる事ではないです。
但し、Upgradeシェルも完璧なものではないので手動での調整が必要な箇所もだいぶあります。
今回初めての作業だったこともあり、調べ物や作業手順などの確認事項が多かったので備忘録としてまとめてみました。
#参考にしたサイト
2.0 移行ガイド
Upgrade シェル
CakePHP2.x系のバージョンアップ手順
CakePHP1.3→2.6のアップグレード時に発生した作業や注意点について