Как правильно установить определенную версию PHP, используемую Apache на Arch?

Похоже, что после недавнего обновления системы 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версией?

0
задан 2 February 2021 в 01:24
1 ответ

Наконец-то 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

Перезапустите необходимые службы или перезагрузите сервер.

Это должно сделать это... я думаю...

0
ответ дан 24 April 2021 в 02:13

Теги

Похожие вопросы