自宅サーバでてきとうにpacman -Syu
したらphpのメジャーバージョンが上がってNextcloudが動かなくなってしまった。
Nextcloudの現在のバージョン20.0.7ではphp8に未対応なのが原因。
メジャーバージョンがあがったということで、古いバージョンのパッケージも用意されている。手元環境ではデフォルトでphp7
パッケージが入っていた。あとはこれを使うようにしてあげれば、Nextcloudが動くようになるんじゃねーかということで、やってみる。
WebサーバはApacheを使ってるので、Apache用のパッケージをインストールして、httpd.confをてきとうにいじって有効化。
$ sudo pacman -S php7-apache
$ sudo vim /etc/httpd/conf/httpd.conf
LoadModule php7_module modules/libphp7.so
AddHandler php7-script php
Include conf/extra/php7_module.conf
$ sudo systemctl restart httpd
ここまででphp7で動作させることができた(phpinfoを見るときちんと7.4.15になっていた)
ところが、nextcloudを開くと、Internal Server Errorが出てかなしい…
nextcloud/data/nextcloud.log
を見ると、Failed to connect to the database: An exception ocurred in driver: could not find driver
とのこと。マジか。
$ php7 -m | grep pdo
モジュール一覧をpdoで検索すると何もでない。有効になってないですね
/etc/php7/php.ini
をいじってリベンジ。
$ sudo vim /etc/php7/php.ini
extension=pdo_mysql
extension=mysqli
$ php7 -m | grep pdo
pdo_mysql
$ sudo systemctl restart httpd
apacheを再起動せずにphpinfoを見るとPDO driversがからっぽのままになる。再起動が必要。
再度ブラウザからnextcloudにアクセスしたら動いてそうな気配があったので、これでいいか。(gdモジュールが必要と怒られるのだけど、上記と同様にしてextension=gd
の行をアンコメントすれば良い)
…とかやってから、Nextcloudのパッケージ情報を見ると、21.0.0-6
が出ている…バージョン21ってPHP8に対応してるやつじゃん…やっちまった、こんなやらなくてよかったじゃーん。ま、いっか。