LoginSignup
0
0

More than 3 years have passed since last update.

PHP7.4に移行後、CakePHP3.8で画像アップロードする際にエラーが出る

Last updated at Posted at 2020-12-03

環境

  • CakePHP 3.8
  • josegonzalez/cakephp-upload : 4.0.1

症状

環境が PHP7.2 → PHP7.4 に変更になりまして。
PHP7.4 の状態で、CakePHP3.8 のアプリディレクトリで bin/cake cache clear_all をすると、なんかコンソールのモデルかなんかでエラーが出るようになりました。調べると、PHP7.4 に準拠してない書き方があるためだとわかったので、composer.lock を一度削除して、再度 composer install しました。キャッシュクリア時のエラーは無事なくなり、キャッシュクリアは問題なく出来るようになりました。

が、なぜか今度はアプリから画像のアップロードが出来なくなりました……。
エラーはこんな感じ。↓

2020-12-03 13:01:30 Error: [Error] Class 'League\Flysystem\Adapter\Local' not found (/var/www/myapp/vendor/josegonzalez/cakephp-upload/src/File/Writer/DefaultWriter.php:160)

原因(と対処法?)

アップロードで使っているのは
josegonzalez/cakephp-upload
なんですが、これが require としてるのが、

"require": {
    "cakephp/orm": "^3.5",
    "league/flysystem": "*"
},

問題はこっちの方。↓

"league/flysystem": "*"

league/flysystem が、今まで1系だったのに、つい最近2系が出たようで、composer install したせいで最新の 2系が入ったんですね。
そのせいで画像アップロードの際に josegonzalez/cakephp-upload から呼び出している League\Flysystem\Adapter\Local が無い!とエラーになっているようでした。確かに、League\Flysystem\Adapter は1系にしかない。なじょして……。

いや、まあ、だいぶファイル構造変わっちゃいましたしね……???
https://github.com/thephpleague/flysystem

さてしかし、これは困った…。
一時的な対応として、大本の composer.json でバージョンを指定してしまうというのは一つの手ですが。

"league/flysystem": "1.*",

ただ、josegonzalez/cakephp-upload さんが、league/flysystem の 2系 に合わせてバージョンアップした場合は、多分またその時にエラーになる。ツラい。
とりあえず、josegonzalez/cakephp-upload さんが対応してくれるのを待ちたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0