サイト移転時のエラー Composerで”Cannot redeclare” 【CakePHP4】

経緯

CakePHPで構築したサイトを別サーバに移転する必要があったので実施。

ファイルとDBを新サーバに移管し、表示確認したところ500エラーがでました。

DBへのアクセス情報等に誤りはなく、原因不明。

解決までの流れ

①composer更新

エラーログを確認したところ以下のような表示

Cannot redeclare composerRequirec5dfa(乱数)...() (previously declared in /パス/vendor/composer/autoload_real.php:66) in 
/パス/vendor/composer/autoload_real.php on line 50'

composerのエラーの様子。なんか関数が重複しちゃってるみたい。

ひとまず検索してみると、以下がヒット。参考にさせていただく。

laravelでの障害に困っています
laravelの学習を「ララ帳」というサイトを使用して学習しております。その中で、(

composerの更新で改善できるらしい。

具体的には下記をせよとのこと。

・venderとcomposer.lockを削除。

・ターミナルでcomposer updateを実行

これでひとまず500エラーは改善できました。

②CakePHPの最新バージョンに対応

しかし、エラーログを確認すると以下のような記載あり。

Use of `BaseErrorHandler` and subclasses are deprecated. Upgrade to the new `ErrorTrap` and `ExceptionTrap` subsystem. See https://book.cakephp.org/4/en/appendices/4-4-migration-guide.html パス/config/bootstrap.php, line: 129 You can disable all deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED`. Adding `config/bootstrap.php` to `Error.ignoredDeprecationPaths` in your `config/app.php` config will mute deprecations from that file only.

どうやらCakePHP4.4では、BaseErrorHandlerが非推奨になっている模様。

エラーログ内で指定されている公式ページをチェックしてみる。

4.4 移行ガイド - 4.x

下記の対応が必要とのこと。

config/bootstrap.php

//差し替え①
//use Cake\Error\ConsoleErrorHandler;
//use Cake\Error\ErrorHandler;
 use Cake\Error\ErrorTrap;
 use Cake\Error\ExceptionTrap;

//差し替え②
// (new ConsoleErrorHandler(Configure::read('Error')))->register();
 (new ErrorTrap(Configure::read('Error')))->register();

//差し替え③
//(new ErrorHandler(Configure::read('Error')))->register();
(new ExceptionTrap(Configure::read('Error')))->register();

これで先程のエラーメッセージも表示されなくなる。

めでたしめでたし。

コメント

タイトルとURLをコピーしました