如何在Ubuntu上安装多个版本的PHP

本教程向您展示如何 安装多个版本的PHP 在Ubuntu上,让特定的Apache虚拟主机或Nginx服务器块使用其中之一。 如果您的服务器上有多个Web应用程序,但是其中一个或两个与默认Ubuntu存储库中的PHP版本不兼容,这将很有用。 Ubuntu 16.04存储库包含PHP7.0,而Ubuntu 18.04存储库包含PHP7.2。 我们将看到如何安装 的PHP5.6PHP7.0, PHP7.2PHP7.4 在单个Ubuntu服务器上。

通过PPA在Ubuntu上安装PHP的多个版本

安装多个PHP版本的最简单方法是使用OndřejSurý的PPA,后者也是certbot PPA的维护者。 要添加此PPA,请在终端中运行以下命令。 的 software-properties-common 如果要从PPA安装软件,则需要软件包。 它会自动安装在Ubuntu桌面上,但在您的Ubuntu服务器上可能会丢失。

sudo apt install software-properties-common

sudo add-apt-repository ppa:ondrej/php

sudo apt update

现在您可以安装 PHP7.4 在Ubuntu上执行以下命令。

sudo apt install php7.4 php7.4-fpm

并安装一些常见的PHP7.4扩展。

sudo apt install php7.4-mysql php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl

您可以输入以下内容查看所有可用的PHP7.4扩展 sudo apt install php7.4 然后按两次Tab键。

安装 PHP7.2 在Ubuntu上运行

sudo apt install php7.2 php7.2-fpm

安装一些常见的PHP7.2扩展。

sudo apt install php7.2-mysql php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl

您可以用相同的方式安装PHP7.0和PHP5.6。 只需替换这些命令中的版本号即可。

在Apache虚拟主机中切换PHP版本

默认情况下,Apache在所有虚拟主机上使用一个PHP版本。 如果要在特定虚拟主机中使用其他PHP版本,则需要禁用Apache PHP模块并通过PHP-FPM运行PHP代码。 检查是否 mod_php 已安装。

dpkg -l | grep libapache2-mod-php

如果已安装,则需要禁用它。 例如,我有 libapache2-mod-php7.2 安装在我的Ubuntu 18.04服务器上,

多个PHP版本的Apache Ubuntu服务器

我通过运行禁用它:

sudo a2dismod php7.2

您还需要禁用前叉MPM模块。

sudo a2dismod mpm_prefork

现在,您需要运行以下命令来启用三个模块,以便使用PHP-FPM,无论是否 mod_php 已安装在您的服务器上。

sudo a2enmod mpm_event proxy_fcgi setenvif

PHP-FPM配置代码段位于 /etc/apache2/conf-available/

运行多个php版本ubuntu服务器

假设您要在Apache虚拟主机中使用PHP7.4,然后打开虚拟主机配置文件,并在 <VirtualHost> 标签。

Include /etc/apache2/conf-available/php7.4-fpm.conf

像这样:

切换php版本ubuntu apache

保存并关闭文件。 然后检查语法。

sudo apachectl -t

重新启动Apache,以使更改生效。

sudo systemctl restart apache2

现在假设您要在Mautic虚拟主机中使用PHP7.2,因为Mautic与PHP7.4不兼容,然后在您的Mautic虚拟主机之间添加以下行: <VirtualHost> 标签,然后重新启动Apache。

Include /etc/apache2/conf-available/php7.2-fpm.conf

要测试您的虚拟主机使用哪个PHP版本,您可以创建一个 info.php 文件放在您的文档根目录中(假设 /var/www/html)。

sudo nano /var/www/html/info.php

将以下PHP代码粘贴到文件中。

<?php phpinfo(); ?>

保存并关闭文件。 然后在浏览器地址栏中输入

your-domain.com/info.php

将PHP 7降级到5.6 Ubuntu

在Nginx服务器块中切换PHP版本

在Nginx服务器块中切换PHP版本非常容易。 您可能知道,Nginx通过PHP-FPM运行PHP代码,该程序在Unix套接字上侦听。 套接字文件位于 /run/php/ 目录。

php-fpm更改php版本

从屏幕截图中可以看到,我的服务器上有四个PHP-FPM套接字文件,分别对应于不同的PHP版本。 您的Nginx服务器阻止文件通常具有以下片段以连接到PHP-FPM服务器。

location ~ .php$ {
    fastcgi_pass unix:/run/php/php5.6-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

nginx多个php版本

Nginx使用的PHP版本由代码段的第二行确定。 要在特定的Nginx服务器块中使用PHP7.4,请将该行更改为:

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

要在Nginx服务器块中使用PHP7.2,请将该行更改为

fastcgi_pass unix:/run/php/php7.2-fpm.sock;

我确定您现在知道了。 保存并关闭文件。 然后重新加载Nginx以使更改生效。

sudo systemctl reload nginx

要测试您的服务器块使用哪个PHP版本,您可以创建一个 info.php 文件放在您的文档根目录中(假设 /var/www/html)。

sudo nano /var/www/html/info.php

将以下PHP代码粘贴到文件中。

<?php phpinfo(); ?>

保存并关闭文件。 然后在浏览器地址栏中输入

your-domain.com/info.php

将PHP 7降级到5.6 Ubuntu

如何为命令行设置默认的PHP版本

要设置默认的命令行PHP版本,请运行以下命令。

sudo update-alternatives --config php

包起来

而已! 我希望本教程可以帮助您使用Apache和Nginx在Ubuntu 16.04 / Ubuntu 17.20上运行多个PHP版本。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯,或在Google +,Twitter或我们的Facebook页面上关注我们。

Sidebar