
webroot ディレクトリ以下の画像関係のパス定数にCake2では「IMAGES」 が定義されているのですが、v2.4からは非推奨になっています。
※ IMAGESはCake2側からCake4メソッドがコールされている場合は基盤がCake2なので、定数は認識できます。
// Cake2側からCake4メソッドをコールしてもIMAGESは認識できる
if (!move_uploaded_file($from, IMAGES)) {
return false;
}
よって、モデルメソッドがCake4側であっても IMAGES は読み込みできていたのですが、コントローラー移行フェーズになると、すべてCake4で稼働します。そうなると、IMAGES は認識できません。なので、代替として App.imageBaseUrl を利用します。
例: Cake4稼働時点でIMAGESはundefined状態になるので代替するとOK
use Cake\Core\Configure;
// クラスメソッド内
if (!move_uploaded_file($from, Configure::read('App.imageBaseUrl'))) {
return false;
}
ベストなのは、Cake2モデル移行時に IMAGES が出現した時点で App.imageBaseUrl として変更してしまうのがよいと思います。
モデル移行時はフツーにパス認識しているので、コードレビュー時に見落としやすいです。気をつけましょう。
追記: 2023/03/16
画像のファイルパスにフルパスが必要な場合、WWW_ROOT . Configure::read('App.imageBaseUrl') という形にするとよいでしょう。