5.0.1から5.0.2への更新が失敗する

【環境情報】
・baserCMSのバージョン:5.0.1
・レンタルサーバー名:バリュードメイン Core Server v1
・使用テーマ:bc_sample
・PHPスキル(自己評価):コードは読めます。

5.01から自動アップデートを実行したところ「 Internal Server Error」が発生します。
どのようにしたら回避できるかご存知の方はいませんでしょうか。

binにあるcakeへ実行属性を付けたのが’良くなかったのでしょうか…
※これをしないと自動アップデートが起動?されません。。。

・実施したサイトはトップページも管理ページも開かなくなってしまいました。
※原因が分からず諦めました。

・新規でサイトを構築しbasercmsをインストール
5.0.1をあえて導入し、直後のアップデート実行でも同様の内容が発生しています。
500エラー後、トップページと管理ページは一応開くようです。
失敗後、トップページを再度開き、再度アップデートしたらトップページも管理ページも開かなくなる症状が再現。

@hitochan こんにちは。
/logs/update.log の内容はどのようになってますか?

確認しましたが、update.logは出力されていませんでした。

エラーログには
2023-07-27 03:44:16 notice: Adding validation rules without a name key is deprecated. Update rules array to have string keys.

/<Serverのフォルダ>/vendor/baserproject/bc-custom-content/src/Model/Table/CustomLinksTable.php, line: 81

You can disable all deprecation warnings by setting Error.errorLevel to E_ALL & ~E_USER_DEPRECATED. Adding vendor/baserproject/bc-custom-content/src/Model/Table/CustomLinksTable.php to Error.ignoredDeprecationPaths in your config/app.php config will mute deprecations from that file only.

のようなエラーが数多く出力されていました。

いくつかわかったことがあります。

・tmpフォルダを消すと「Internal Server Error」にならずサイトのアクセスが可能となった。
・他の書き込みであった「composer.phar」をSSHで実行する方法のアップデートは成功する。
※5.0.4まで上がりました。

管理コンソール上でアップデートすると何かが壊れてしまうようです。

@hitochan フィードバックありがとうございます。
エラーログの内容については、既知のものになります。
PHP8の非推奨処理についてbaserCMSが対応していないものがあり、エラー表示設定で通常は抑制しているのですが、それが出てしまっているものになります。

・tmpフォルダを消すと「Internal Server Error」にならずサイトのアクセスが可能となった。

もしかしたら、tmp 内のキャッシュファイルが影響していたのかもしれないですね。

・他の書き込みであった「composer.phar」をSSHで実行する方法のアップデートは成功する。

うまくいかない場合はこちらを推奨するしかないですね、アップデート画面や、公式ガイドに記載しておきたいと思います。

@hitochan こちらの件、調査を進めたところ、Core Server では、内部的にPHPのコマンドを実行する際、CLI版のPHPが明確に指定されないとうまく動作しないという問題に起因するようでした。

Internal Server Error になる原因は、CakePHPのコマンド実行時に、CLI版のPHPでないことが原因でした。

なお、この問題は、baserCMS5.0.2 で解決済でした。取り急ぎご報告まで。

@hitochan さらにドキュメント更新しておきました。

ご連絡ありがとうございます。
現状、5.0.4までコマンドによりアップデートしていますので、次回アップデートのときにGUIから進めてみます。

5.0.5がリリースされたので早速5.0.4のGUIから試したところ固まってしまいました。
だいぶ待ったたあとログイン画面へアクセスし、ログインしたところ以下のメッセージとなり画面が開けなくなりました。
エラー: アドレス ‘/baser/admin’ に送信されたリクエストは無効です。」

ログを確認したところファイルが無いと出力されている状況です。

2023-10-03 01:05:04 error: [Cake\Routing\Exception\MissingRouteException] A route matching “/js/admin/functions.js” could not be found. in 「server-path」/vendor/baserproject/baser-core/src/Routing/RouteCollection.php on line 197

2023-10-03 01:05:33 error: [Cake\View\Exception\MissingElementException] Element file BcMail.Dashboard/mail_messages.php could not be found.

ダメ元でコマンドラインでのアップデートも実行しましたが、症状変わらずです。
大変お手数ですが、原因のわかる方がいましたらコメントお願い致します。

上の続きです。他の挙動を確認した結果、コンテンツ自体は開ける事を確認しました。
そこから編集画面を開く事もできました。
どうやらダッシュボードのみが開けなくなっているようです。
またプラグインの画面ではプラグインがすべてグレー表示となっています。

@hitochan こちらを参考にデバッグモードに切り替え、ブラウザで問題となる画面をいくつか表示してスクリーンショットを撮って添付して頂けますか?

@ryuring 回答ありがとうございます。
作業時間が取れずリプライが遅くなりました。すみません。

デバッグモードで確認したところ、なんとなく原因が掴めました。
エラーで落ちている箇所がBcMailに関係する部分でした。

先にお伝えしていた通り、アップデート失敗の影響でプラグインが全て無効になっています。
それが影響し、BcMailが無効だとダッシュボードがエラーとなっていたようです。

プラグインを一度クリアし、再度BcMailを登録したところ、ダッシュボードが正常に開けるようになりました。

まだ細かくは見ていませんので、一通り操作等を行ってみます。

「いいね!」 1

プラグインは素直に有効になりませんでした。
プラグインの操作にて、データクリアや有効とすると固まってしまいます。
※BcMailは問題なし。BcBlogは固まる状況。

試しにDBのstatusを1に設定してみました。
とりあえず元に戻った感じです。

なぜプラグインがクリアされてしまったのか、そこのところを知りたくクリーンな環境へv5.0.4を導入し、v5.0.5へバージョンアップしてみることにしました。

結果としてはv5.0.4の導入は成功しましたが、導入直後で「ダッシュボードが開かない問題」が起きました。同じようにプラグインのテーブルを確認しましたが、statusはすべて1の状態でした。

しかしエラーが生じているところは同じでした。
ROOT/vendor/baserproject/baser-core/src/View/Helper/BcBaserHelper.phpの336行目
$out = $this->_View->element($name, $data, $options);

エラーメッセージは
Element file BcMail.Dashboard/mail_messages.php could not be found.

mail_messages.phpを要求しているパスは以下の通り
/vendor/baserproject/bc-admin-third/templates/plugin/BaserCore/Admin/element/BcMail.Dashboard/mail_messages.php
サーバの中を確認すると「BaserCore」フォルダがありません。

mail_messages.phpを探してみたところ
/vendor/baserproject/bc-admin-third/templates/plugin/BcMail/Admin/element/Dashboardにありました。

どうやらv5.0.4あたりからクリーンインストールが行えなくなっている模様。
※ちなみに元のv5.0.4は、v5.0.3からのコマンドでのアップデートでした。

「いいね!」 1

@hitochan おおお、大きなヒントありがとうございます。ちょっと調査してみますね。

@hitochan 取り急ぎ、BcMail プラグインが無効になっている場合に、ダッシュボードが開けない問題は解消しました。

あと、アップデートが失敗する問題が気になりますね。

アップデート時にはプラグインを一旦、全て無効化し、アップデート完了後に、有効化する仕様となっています。処理がコケた際も有効化する処理になっているみたいなんですが、ちょっと原因がわからないですね、、、