PHPのアップデートで起動しなくなったNextcloudを無理やりアップデートさせる

2 min read

images.png

こんにちは、無能です。

PHP8.2.7まで一気に上げた事によってPHP8.0までサポートされていたNextcloudが起動しなくなってしまいました。

This version of Nextcloud is not compatible with PHP>=8.2.
You are currently running 8.2.7.

これだけ表示だけされてCLIからアップデートしようとしてもCLIからのアップデートすら出来なくなります。

という事でNextcouldが認識するPHPバージョンを偽装する方法を見つけました。

場所はNextcloudディレクトリ内の/nextcloud/lib/versioncheck.phpです。
※以下はすでにアップデート済みのもの。コメントアウト部分は長いので消しています。

<?php

declare(strict_types=1);

if (PHP_VERSION_ID < 80000) {
	http_response_code(500);
	echo 'This version of Nextcloud requires at least PHP 8.0<br/>';
	echo 'You are currently running ' . PHP_VERSION . '. Please update your PHP version.';
	exit(1);
}

// Show warning if >= PHP 8.3 is used as Nextcloud is not compatible with >= PHP 8.3 for now
if (PHP_VERSION_ID >= 80300) {
	http_response_code(500);
	echo 'This version of Nextcloud is not compatible with PHP>=8.3.<br/>';
	echo 'You are currently running ' . PHP_VERSION . '.';
	exit(1);
}

問題はここです。

if (PHP_VERSION_ID >= 80300) {

ここでバージョンを確認するようなので、自分が入れているPHPバージョンと同じかそれ以上にしてください

私の場合、PHP8.2.7だったので以下のように変更しました。

if (PHP_VERSION_ID >= 80207) {

その後CLIから

sudo -u www-data php /var/www/html/cloud/occ update:check

で通りました。
ユーザー指定と、occが起動出来るように適切なパスを設定してください。

一気に最新バージョンまで上げましたが、かなり動作が軽くなって結果的に良かったと思います。
でも、この仕様ってどうなんでしょうか・・・。
PHPに関わらず、アップデート出来るようにデフォルトからするべきなような気もしますが、なぜこのような仕様を採用したか不明です。

それではまた。