如何在 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)。我基本上只是將 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 是我唯一使用的東西,儘管這可能是不必要的)將此添加到執行 nextcloud 的 Apache 虛擬主機:
<FilesMatch \.php$> SetHandler "proxy:unix:/run/php-fpm7/php-fpm.sock|fcgi://localhost/" </FilesMatch>
只需更改
php
為php7
in/etc/systemd/system/nextcloudcron.service
。ExecStart=/usr/bin/php7 -f /srv/http/nextcloud/cron.php
重新啟動必要的服務,或重新啟動伺服器。
那應該這樣做..我認為..