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')
という形にするとよいでしょう。