質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

2回答

5694閲覧

cakephp2から3 アップグレードについて

MKannna

総合スコア4

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2020/11/18 09:39

PCを買替えた為、使っていたCakephpの移動に伴いバージョンもアップしようとしてますが
うまくできません。

環境
古いmacOS10.9.5の環境
cakephp2.5.5
sentOS6.5
php5.4.37

新しいmacOS10.15.7
sentOS7.8
php7.4.11
composer2.0.7

古い方からmyProject(cakephp)
を任意の場所にコピーぺしまし
/var/www/html/myProject

https://getcomposer.org/download/
こちらを参考にcomposerをインストールしました。

https://github.com/cakephp/upgrade
https://github.com/dereuromark/upgrade
上記サイト参考に実行しました。

[vagrant@localhost]$ git clone git://github.com/cakephp/upgrade [vagrant@localhost upgrade]$ composer install ..... Package zendframework/zend-diactoros is abandoned, you should avoid using it. Use laminas/laminas-diactoros instead. Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested. Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested. Generating autoload files > Cake\Composer\Installer\PluginInstaller::postAutoloadDump 3 packages you are using are looking for funding. Use the `composer fund` command to find out more! > App\Console\Installer::postInstall Created `config/app.php` file Created `/home/vagrant/upgrade/vendor/cakephp/app/tmp/cache/views` directory Set Folder Permissions ? (Default to Y) [Y,n]? Y ↑途中こんなメッセージ出ましたが一応完了しました。 [vagrant@localhost upgrade]$ bin/cake upgrade all /var/www/html/myProject/app

myProject/app内を確認すると
bin,src,tests
のフォルダはできていたのですが
vendorは無く、Config内も空になっています。

myProject/appの中身を
myProject直下に移動して
ブラウザを表示すると下記のように表示されています。

Warning: include(Cake/bootstrap.php): failed to open stream: No such file or directory in /vagrant/myProject/webroot/index.php on line 90 Warning: include(): Failed opening 'Cake/bootstrap.php' for inclusion (include_path='/vagrant/lib:.:/usr/share/pear:/usr/share/php') in /vagrant/myProject/webroot/index.php on line 90 Fatal error: CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your /cake core directory and your /vendors root directory. in /vagrant/myProject/webroot/index.php on line 99

色々調べましたが
何がいけなくて
足りない処理がなんなのか
全くわからない状態です。
ご教授のほどよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

まずエラーの原因として、webroot/index.phpがCakePHP 2のままであると推察されます。

アップグレードツールはすべてアップグレードしてくれるわけではなく、メソッド名やファイル名の更新程度しかしてくれません。(参照: upgrade/docs at master · dereuromark/upgrade
設定ファイルやアプリケーションブートストラップなどの更新は行ってくれませんので、自分で更新する必要があります。

2.xから3.xの移行であれば、まずは以下のマイグレーションガイドを読んでください。
3.0 移行ガイド - 3.9

次に3.x系の最新である3.9まで各マイナーバージョンのマイグレーションガイドを読み進めて行く必要があります。

(このあたり必要な知識が多いのが初心者には不可能と思われる理由ですね。

移行の仕方としては、CakePHP 3.xの新規プロジェクトを作成してから、現行の設定を移し、その後現行のソースをdereuromark/upgradeでアップグレードしたものを新規プロジェクトへコピーしていき、動かないところを調整していくという進め方がよいと考えます。
小規模なものなら1から作り直した方が早い場合もあるでしょう。

なお、upgradeツールは現在4.xへのアップグレードを対象にしています。3.xで止めたいなら、cake3ブランチを利用するとよいでしょう。

投稿2020/11/18 13:20

nojimage

総合スコア957

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nojimage

2020/11/18 13:24

なお、dereuromark/upgrade は cakephp/upgradeの内容を含むので、dereuromark/upgradeだけを使用すればいいです。
MKannna

2020/11/19 00:01

丁寧なご対応ありがとうございます。 最終的にCakePHP4にアップグレードしたいと思っています。 経緯としましては 初めにcakephp/upgradeでアップデートを試みましたが、 バージョンが合わないというエラーが出てできず 色々調べた結果、段階的にバージョンアップした方が良いと言うことに辿り着き dereuromark/upgrade をやっと見つけてアップグレードしようとして質問内容のような状態になりました。 しかし、おっしゃる通り、新規プロジェクトを作成してから、アップグレードしたファイルを移動したら できるのではないかとも思い、CakePHP3をインストールしようとしたのですが、 Install of cakephp/plugin-installer failed とエラーが出て、パーミッション変更を促すメッセージも出ずに処理が中断されしまいます。 フォルダはインストール?されているようなのですが、完全ではないようで 上記メッセージを検索しても、解決に至らず、今回の質問に至りました。 アップグレードが難しい事は理解しました。 ご指摘の通り新規プロジェクトにコピペする方法をとりたいと思いますが 上記のエラーの解決方法を教えていただけると助かります。 また、ブラウザを表示すると 下記のようなメッセージが出ています Warning: include(Cake/bootstrap.php): failed to open stream: No such file or directory in /vagrant/myProject/webroot/index.php on line 90 Warning: include(): Failed opening 'Cake/bootstrap.php' for inclusion (include_path='/vagrant/lib:.:/usr/share/pear:/usr/share/php') in /vagrant/myProject/webroot/index.php on line 90 Fatal error: CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your /cake core directory and your /vendors root directory. in /vagrant/myProject/webroot/index.php on line 99 ですが、autoload.phpは存在していません。 pulaguinのエラーと関係あるのでしょうか? お手数おかけしますが、ご教授のほどよろしくお願いします。
nojimage

2020/11/19 00:30

webroot/index.php は3.xのものを使用してください。 2.xのプロジェクトの app/ ディレクトリのなかで、あなたが追加・変更した部分のみをアップグレードして、3.xのプロジェクトへ移動させます。
nojimage

2020/11/19 00:33

> CakePHP3をインストールしようとしたのですが、Install of cakephp/plugin-installer failed とエラーが出て、パーミッション変更を促すメッセージも出ずに処理が中断されしまいます。 これについては別途質問を立てて、インストールのために使用したコマンド、発生したエラーメッセージの全文を見せてもらわないと回答できません。
MKannna

2020/11/20 03:38

返信遅くなりまして、すみません。 早急なご回答ありがとうございます。 インストール時のエラーについては別途質問をあげました。 https://teratail.com/questions/305423?modal=q-comp お手数ですが、ご教授のほどよろしくお願いします。
MKannna

2020/11/20 03:54

>webroot/index.php は3.xのものを使用してください。 アップグレードする前に置き換えればいいと言うことでしょうか? >あなたが追加・変更した部分のみをアップグレード これはマイグレーションガイドを見ながら変更していくということでしょうか? 勉強が足りず、理解に苦戦していてすみません。 お手数ですが、ご教授のほどよろしくお願いします。
nojimage

2020/11/20 05:48

CakePHP 2.5.5をダウンロードしてきて、diffコマンドなどであなたのコードとの差分を取ってください。それが、あなたが追加・変更した部分です。アップグレード、移行するのはその部分のみです。 アップグレードはまずツールを適用してから、動かない部分をマイグレーションガイドやマニュアルを見ながら修正していきます。
MKannna

2020/11/25 01:33

ご教授ありがとうございました。 調べてもどうアップグレードしていいかわかりませんでしたが、 おかげ様で大まかな手順がわかりました。 インストールも一応できましたので、あとは地道に修正して行きたいと思います。
guest

0

Cake2から3はベテランでも難しいので諦めたほうがいい。
初心者には不可能と思っていい。
自分で作ったものならすでに4が出てるので全部作り直したほうが早い。

投稿2020/11/18 11:06

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問