Nextcloudをバージョンアップしたところ途中でエラーとなり先に進まず!いろいろと調べてやっとアップデートできました。また同じことが起きるかもしれないので忘備録として残しておくことにしました。
アップデートの途中でエラー
いつも通りアップデートを行っていると途中でエラーとなり止まってしまいました。
今回はいきなりつまづいてしまいました。とりあえずログを見ることにします。
サーバー管理画面からエラーログをダウンロードし内容を確認。
cloud/.htaccess: Invalid command ‘ModPagespeed‘, perhaps misspelled or defined by a module not included in the server configuration, referer: https://cloud.hwidhrly.com/index.php/login
どうやら”ModPagespeed”が悪さをしているみたいです。
以前はエックスサーバーでもModPagespeedのオプションがあったようですが現在はありません。
なのでこのコマンドがエラーを起こしているようです。
htaccessのファイル編集を行うことにします。
編集といっても簡単で、ModPagespeed Offの前に#を付けてコメントアウトするだけです。
これで先に進むことができました。
アップデート後の500エラー
無事アップデートが終わったと思いきや、また500エラーでログイン画面が表示されません!
先ほど同様、エラーログを確認します。
“htaccess”の下の方にある構文がうまく改行されていないためにエラーが発生しているようです。
# php — END cPanel-generated handler, do not edit#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####
“htaccess”の一番下?にある”###”から下を改行してやることで解決⇩
AddDefaultCharset utf-8
Options -Indexes
#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####
とりあえずこれでログインをすることができました。
警告メッセージの対処
次に警告への対処を行っていきます。
過去に対処したものと同じ内容のものがあるので、同じように対処していきます。
また、”データベースにいくつかのインデックスがありません”の表示もいつものようにエックスサーバーのサーバー管理画面からphpMyAdminに入り、インデックスを追加していきます。
ただ、今回困ったのは“テーブル “oc_preferences”のインデックス “preferences_app_key”が見つかりません” のインデックスを追加することができません!
いつもと同じように追加をすると”phpMyadmin #1062 Duplicate entry インデックスが重複”とエラーメッセージがphpMyadmin画面に表示され先に進むことができません。いろいろと検索をすると”サアロフィア”さんのサイトで解決方法を説明していましたので参考にさせていただきました。
“1個のカラムを追加する”を3個に変更し実行をクリック。
“+インデックス”をクリックするとインデックスの詳細が表示されるので、”preferences_app_key”が追加されていることを確認すれば完了です。
これでほぼすべての警告への対処ができたことになります。
対処ができない警告2つ
どうしても対処ができない警告が2つあります。
これはエックスサーバー自体が対処していないためにどうしても残ってしまう警告となります。
- 整合性チェックに合格しない
htaccesの中でModPagespeed Offの前に#を付けたために元のhtaccesと同じではないために起きている
整合性チェックでのエラーログです。赤枠の部分が問題になっているところです。
- PHPモジュールがいくつかありません
エックスサーバーではsodiumモジュールに対応していない
ということでこの2つに警告はどうしようもないのでとりあえず放置することになります。
気分的にはスッキリしないのですが…。
ログインページがブランク エラー500に!
後日25.0.2にアップデート後、ログインしようとするとまたまたエラーでログインできません。
今回はログインページは表示されID,パスワードを入れてログインをクリックすると白いエラーページが表示され先に進まなくなってしまいます.
エックスサーバーの管理画面よりエラーログを確認するとどうやら”ExceptionSerializer.php”に問題があるようです。
AH01071: Got error ‘PHP message: PHP Fatal error: Nesting level too deep – recursive dependency? in /home/hwideharley/hwidhrly.com/public_html/cloud/lib/private/Log/ExceptionSerializer.php on line 215’
いろいろと調べたらアメリカのサイトに応急処理の方法があったのでそれで対処することにしました。
いつものようにエックスサーバーのファイル管理画面からExceptionSerializer.phpファイルを編集することにします。
ExceptionSerializer.phpファイルの212行目の下に” return $args;”を追記するだけです。
今回は後で何かあったときに追加した部分を分かりやすくするためにハイライトのように追記しました。
private function removeValuesFromArgs($args, $values) {
// added to fix login exception, 2022-12-11
return $args;
// ******
$workArgs = [];
foreach ($args as $arg) {
if (in_array($arg, $values, true)) {
$arg = self::SENSITIVE_VALUE_PLACEHOLDER;
} elseif (is_array($arg)) {
$arg = $this->removeValuesFromArgs($arg, $values);
}
$workArgs[] = $arg;
}
return $workArgs;
}
これで無事ログインし先に進むことができるようになりました。
とりあえず問題は出ていないようですが、これはあくまでも応急処置で正式な解決方法ではないとアメリカのサイトにも記載されていたので、今後のアップデートで対処されることを願うばかりです。
さいごに
Nextcloudはいろいろと使い道はあるのですがアップデートのたびに警告への対処を行わないといけないのがちょっと大変ですね。またデータベースやPHPファイルを編集したりして大切なデータがなくならないかと心配も…。
htaccessやPHPファイル、データベースを編集する際には自己責任となりますのでご注意ください。
コメント