Похоже, что после недавнего обновления системы Arch мой сервер NextCloud больше не работает, выдавая "Эта версия Nextcloud не совместима с > PHP 7.4. В настоящее время вы используете версию 8.0.1."
php -v
теперь выдает PHP 8.0.1
, но у меня также установлен /usr/bin/php7
(PHP 7.4.14).
Я в основном использую PHP для nextcloud
(cur. v20.0.6-1), через Apache + php-fpm
Так что мне интересно, что будет правильным "арочным способом", или обходным решением, чтобы предпочесть продолжать использовать php7
? (по крайней мере, на данный момент)
Как-нибудь я могу, например, понизить версии пакетов php
и php-fm
или что-то в этом роде? (желательно, чтобы это не нарушило что-то еще) . Или мне лучше подождать новой версии nextcloud
, которая будет совместима с текущей php
версией?
Наконец-то NextCloud снова работает. И я решил, что опубликую здесь некоторые заметки о том, как это сделать, для моего собственного будущего справочника и в качестве совета для любого другого человека, возможно, столкнувшегося с той же проблемой.
Я прошу прощения за то, что не сделал ответ более подробным и менее запутанным. Но я так много возился, что даже не совсем уверен, не упустил ли я один или несколько моментов.
Установленные пакеты Arch:
php7 php7-apache php7-apcu php7-fpm php7-gd php7-igbinary php7-imagick php7-imap php7-intl php7-memcache php7-memcached php7-pgsql php7-redis php7-sqlite php7-xsl
(Они могут зависеть от желаемых/установленных приложений Nextcloud См. Необходимые условия Nextcloud для более подробной информации.)
Проверьте (и отредактируйте) /etc/php7/php.ini на наличие необходимых расширений php:
Добавьте все недостающие расширения/модули php.
$ php7 -m # confirm that the needed modules are enabled
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gmp
hash
iconv
igbinary
imagick
imap
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
redis
Reflection
session
SimpleXML
SPL
standard
tokenizer
xml
xmlreader
xmlwriter
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
Включите и запустите php-fpm7:
$ sudo systemctl enable php-fpm7.service && sudo systemctl start php-fpm7.service
(примечание: я также отключил php-fpm. service
, поскольку nextcloud - единственное, что используется в моем случае, хотя это может быть излишним)
Добавьте это на виртуальный хост Apache, на котором запущен nextcloud:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm7/php-fpm.sock|fcgi://localhost/"
</FilesMatch>
Исправьте nextcloud systemd cronjobs:
Просто измените php
на php7
в /etc/systemd/system/nextcloudcron.service
.
ExecStart=/usr/bin/php7 -f /srv/http/nextcloud/cron.php
Перезапустите необходимые службы или перезагрузите сервер.
Это должно сделать это... я думаю...