Php

如何在 Arch 上正確設置 Apache 使用的特定 PHP 版本?

  • February 2, 2021

所以看起來在最近的 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)。

我基本上只是將 PHP 用於nextcloud (cur. v20.0.6-1),通過 Apache +php-fpm

所以我想知道選擇繼續使用的正確“拱形方式”或解決方法是php7什麼?(至少目前)

任何方式我可以例如降級phpphp-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 是我唯一使用的東西,儘管這可能是不必要的)

將此添加到執行 nextcloud 的 Apache 虛擬主機:

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

修復nextcloud systemd cronjobs

只需更改phpphp7in /etc/systemd/system/nextcloudcron.service

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

重新啟動必要的服務,或重新啟動伺服器。

那應該這樣做..我認為..

引用自:https://serverfault.com/questions/1052022