お茶漬けぶろぐ

ArchLinuxでPHP7(レガシーパッケージ)を使う

自宅サーバでてきとうにpacman -Syuしたらphpのメジャーバージョンが上がってNextcloudが動かなくなってしまった。
Nextcloudの現在のバージョン20.0.7ではphp8に未対応なのが原因。
メジャーバージョンがあがったということで、古いバージョンのパッケージも用意されている。手元環境ではデフォルトでphp7パッケージが入っていた。あとはこれを使うようにしてあげれば、Nextcloudが動くようになるんじゃねーかということで、やってみる。

PHP7を導入する

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が動くようにPDOの有効化

ところが、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に対応してるやつじゃん…やっちまった、こんなやらなくてよかったじゃーん。ま、いっか。

L2TP over IPSecが繋がらなくて悲しい >