如何正确设置 Arch 上 Apache 使用的特定 PHP 版本?

如何正确设置 Arch 上 Apache 使用的特定 PHP 版本?

因此,在最近的 Arch 系统升级之后,我的 NextCloud 服务器似乎不再工作,目前给我"This version of Nextcloud is not compatible with > PHP 7.4. You are currently running 8.0.1."

php -v现在给了我PHP 8.0.1但是我确实也/usr/bin/php7安装了(PHP 7.4.14)。

我基本上只使用 PHPnextcloud (当前版本 v20.0.6-1),通过 Apache +php-fpm

所以我想知道什么是正确的“拱门方式”或解决方法,选择继续使用php7(至少目前如此)

有什么方法可以让我例如降级phpphp-fm包或者别的什么吗?(最好不要破坏其他东西)。或者我或许只是应该等待新版本与当前版本nextcloud兼容?php

答案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 是我唯一使用的东西,所以我也禁用了它,尽管这可能是不必要的)

将其添加到运行 nextcloud 的 Apache 虚拟主机:

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php-fpm7/php-fpm.sock|fcgi://localhost/"
</FilesMatch>

使固定nextcloud systemd cronjobs

只需更改phpphp7即可/etc/systemd/system/nextcloudcron.service

ExecStart=/usr/bin/php7 -f /srv/http/nextcloud/cron.php

重新启动必要的服务,或者重新启动服务器。

那应该可以做到..我想..

相关内容