経緯
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();
これで先程のエラーメッセージも表示されなくなる。
めでたしめでたし。
コメント