Php

如何在 Virtualmin 6、Debian 9 中安裝多個 PHP 版本

  • January 28, 2019

預設情況下,Debian 9 附帶 PHP 7,但我也對舊網站的 PHP 5 感興趣。

我嘗試遵循/改編本指南(不是特定於 virtualmin) https://pehapkari.cz/blog/2017/03/27/multiple-php-versions-the-easy-way/

但這是我得到的錯誤(因為 Virtualmin 檢測到錯誤的 php 二進製文件):

[Tue Jan 22 15:08:58.713966 2019] [fcgid:warn] [pid 1023] (104)Connection reset by peer: [client MYIP:62256] mod_fcgid: error reading data from FastCGI server
[Tue Jan 22 15:08:58.714041 2019] [core:error] [pid 1023] [client MYIP:62256] End of script output before headers: test.php

所以首先你需要為 PHP 5.6 添加儲存庫,“這裡是直接來自 Debian 的 PHP 包維護者 Ondřej Surý 的包。”

$ apt-get install apt-transport-https
$ curl https://packages.sury.org/php/apt.gpg | apt-key add -
$ echo 'deb https://packages.sury.org/php/ stretch main' > /etc/apt/sources.list.d/deb.sury.org.list
$ apt-get update

現在關鍵是安裝正確的php包,在virtualmin執行預設FCGId模式的情況下,是:

$ apt-get install php5.6-cgi

我還想要 mysql/i、gd 和 xml 支持,所以:

$ apt-get install php5.6-mysql php5.6-gd php5.6-xml

這些都將安裝一些依賴項。

最後:

service apache2 restart

現在您應該能夠執行“系統設置”->“重新檢查配置”並查找應該顯示如下內容的行:

The following PHP versions are available : 5.6.40 (/usr/bin/php-cgi5.6), 7.0.33 (/usr/bin/php-cgi7.0)

確保兩個 bin 都是 -cgi 變體,這就是我得到的原因,因為我有一個檢測為沒有 -cgi 位的普通 php5.6。

現在您應該可以轉到“伺服器配置”->“PHP 版本”並選擇我們安裝的新(舊)版本。

現在還要檢查“服務”中是否有一個新選項來配置新的 5.6 php.ini,否則您需要轉到“伺服器配置”->“網站選項”並從 FCGId 更改為 CGI 包裝器並返回到 FCGId同樣,這將在新部分中生成您的 php.ini。

現在最後你可能想要註釋掉我們之前添加的新的 apt 源,以阻止你的“正常 debian”php 包升級

#deb https://packages.sury.org/php/ stretch main

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