PHPを7.4に変更したら、nextcloudにログインできなくなったでござるの巻

2020年8月12日

 ええ、まあタイトルの通りでnextcloud18+php7.3の環境で、php7.4への変更を実施。
 変更手順はとりあえずnginxとphp-fpmとredisとか諸々止めて、php7.3および関連パッケージ全削除。
 その後、dnf module reset phpでphp7.3のモジュール指定を解除し、dnf module install php:remi-7.4でphp7.4(と関連パッケージの一部)をインストール。
 その後、インストールできていないphp7.4関連パッケージをインストールした後に各種設定ファイル(php.iniやwww.conf)を設定。
 なお、この際にphp-fpm7.4のコンフィグのデフォルト値から変更した箇所が1つだけ。

listen.acl_users = apache,nginx → コメントアウト

 この設定はlistenで指定したsockファイルへアクセスする際のアクセス権を指定しているみたいなのだが、デフォルトのままだとwww.sockに対してpermission deniedとなってしまった。
 で、この設定が有効だとlisten.owner/listen.groupが無効化されると言うことなので、逆に listen.owner/listen.group をphp7.3の時と同じ設定にしてlisten.acl_usersをコメントアウトすることで解決してる。

 で、そこまで設定して各種サービスを再起動し、rainloopやwordpress、prometheus/grafana等が正常に動作していることを確認したが、nextcloudの再ログインができない。
 利用者用アカウント、管理者アカウントともにパスワードが間違っていると返されて憤怒。

 どうも、php7.4に変更した影響でパスワードが認識できていないみたいだったので、一か八かでパスワードの再設定を利用者用アカウントで実施し、無事に変更したパスワードでログインできることを確認(クライアントソフトでの同期も確認)
 次いで、管理者アカウントもパスワードリセットを試みるもパスワードリセット通知メールが届かない。nextcloudのログを見ると管理者アカウントにパスワードリセット用のメールアドレスが登録されていないという旨のエラーがあり絶望。

 しかし、管理者ログインできないといろいろマズイので、とりあえずphpmyadminを導入し、データベースに接続し、管理者アカウントの情報にメールアドレスを追加(というか利用者アカウントの設定をもとにキーを作成)して再度パスワードリセットを実施。
 とりあえず無事にパスワード変更通知メールが届いたのでリンク先からパスワード変更、無事にログインができることを確認。

 とりあえずこれで無事にphp7.4への更新が完了したのでめでたしめでたし。
 同じようなことをしようとしている方へのアドバイスとしては、管理者アカウントについてはパスワードリセット用のメールアドレスをちゃんとしておくこと。