快調に働いてくれていた Nextcloud(いや、ときどき挙動不審だったけど、それはともかく)が、突然停止しました。
あーそうか、ロリポップから「PHP8.2(モジュール版)の提供に関するご案内」てのが来てたなあ。Nextcloud の動作チェックしなくちゃな、と思いながらも、先送りにしていた。そのせいだな。
Nextcloud をアップデートすればいいはずですが、この状況になってしまったらアップデートもできない。というわけで、アップデートのために、CGI版の PHP 8.1 に戻しました。ロリポップのサーバコントロールパネルから簡単に変更できます。
とりあえず Nextcloud にログインできるようになったので、「設定→概要」を開きます。アップデートのボタンがあります。ただし、最新版に直接アップデートはできないので、マイナーバージョンのアップグレードをやって、そのあとメジャーバージョンのアップグレードを順番にやっていきます。
アップデーターの画面に行くと、「Start update」というボタンがあるので、これを実行。
しかし、途中の Verifying integrity で失敗した。その後、こういう表示が出るようになって、アップデートを継続できなくなってしまった。
いろいろ情報を検索すると、以下の情報を発見。「Nextcloudでアップデートに失敗して再開できなくなった時の対処」。ビンゴじゃん。原因はメモリ不足らしい。
上記の記事に従って、data
フォルダ直下にある updater-XXXXXX
というフォルダを削除する。めっちゃ時間かかります。ロリポップの FTP だと途中でおかしくなってしまうので、FileZilla を使いました。
2024/06/15 追記:updater-XXXXXX
の直下にある .step
というファイルを削除すればよいようです。この方がずっと早い。
再開する前に、忘れずにメモリ容量を拡張しておく。まず、ロリポップのサーバコントロールパネルで PHP の設定を開き、「php_value, php_flagを利用可能にする 」を ON にする。
そして、Nextcloud インストールディレクトリの直下にある .htaccess
を開いて、<IfModule mod_php.c>...</IfModule>
の間に以下の行を追加。
php_value memory_limit 512M
2023/11/3 追記:Nextcloud 26.0.2 から 26.0.8 にアップグレードしようとして、上と同じ手順を踏んだのですが、PHP 8.2 CGI 版では .htaccess
ではなく、.user.ini
に memory_limit=512M
と記載する必要があるようです。
Nextcloud アップデーターの画面に戻って、「Start update」を再度実行。今度は通りました。
「Disable maintenance mode and continue in the web based updater」を押す。次の画面になる。
「アップデートを開始」を押すと、アップデートの作業が行われ、新バージョンの Nextcloud のトップページに移る。データはちゃんと残っています。
もう一度「設定→概要」を実行すると、今度は次のメジャーバージョンへのアップデートができるようになっている。なお、メモリ設定はリセットされているので、.htaccess
への追記を忘れないように。
26.0.2 までアップデートしたところで止めました。27.0.0 は先週出たばかりなので、さすがに少し待った方がいいだろう。最後に PHP を「8.2 モジュール版」に戻して完了。無事動いています。