在 Ubuntu 上运行多个版本的 PHP

在 Ubuntu 上运行多个版本的 PHP

有没有一种简单的方法可以在 Ubuntu 10.04(桌面版)上运行多个版本的 PHP,并在它们之间切换?

我对 Windows 版 WAMP 中 PHP 的安装和切换非常轻松感到满意。这适用于开发环境。

答案1

这个想法是手动编译几个版本的 PHP(./configure,./make 但不是 ./make install),并在您的 VirtualHost 配置中加载您请求的 PHP 扩展。

这样,您可以推迟加载 PHP 库,直到需要它为止,并且可以为每个 VirtualHost 选择不同的 PHP 库。

答案2

为了避免安装和配置两个或多个 Web 服务器(在两个或多个端口上监听),请尝试阅读以下内容:

答案3

我在处理多个项目时也遇到了同样的问题。我提到本文 但就像每次我需要在需要时切换版本一样,但这为 cli 和 web 分别提供了灵活性。

从 php5.6 迁移到 php7.0

对于 Apache,我们可以使用以下命令:

sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart

对于 CLI,我们可以使用以下命令:

sudo update-alternatives --set php /usr/bin/php7.0

从 php7.0 迁移到 php5.6

对于 Apache,我们可以使用以下命令:

sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart

对于 CLI,我们可以使用以下命令:

sudo update-alternatives --set php /usr/bin/php5.6

答案4

另一个采用过时方法的问题出现在头版,所以让我们来回答。a2enmod如今,PHP-FPM 提供了一种解决方案,您可以同时安装多个版本的 PHP。它使您能够在没有/ 的情况下在版本之间切换,a2dismod并且还允许一次为一个项目更改它。

以下是一个服务器示例PHP 5.6、PHP 7.0 和 PHP 7.2 同时运行

  1. 此服务器是 Debian 9。同样,任何发行版可能只有一个 PHP 版本的软件包。我deb https://packages.sury.org/php/ stretch main在我的 apt 源中使用。

  2. 为每个至少安装 PHP-FPM apt-get install php5.6-fpm php7.0-fpm php7.2-fpm:。

  3. 每个 PHP-FPM 都带有一个默认水池 [www]配置在代表 PHP 版本的/etc/php/x.y/fpm/pool.d位置x.y。在生产环境中,我建议为每个站点使用一个新池(请参阅我的回答保护具有单独用户的 Web 服务器的安全),但为了简单起见,我将在此示例中使用这些默认池。在开发中也可能没问题。

  4. 在您的<VirtualHost>配置中,使用 fcgi 代理通过 FPM 池运行 PHP 脚本,例如

    <FilesMatch "\.php$">
            SetHandler  "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
    </FilesMatch>
    <Proxy "fcgi://localhost/">
    </Proxy>
    
  5. php7.0-fpm.sock通过在上面的指令中使用不同的套接字( , php7.2-fpm.sock)来在 PHP 版本之间进行切换SetHandler。更改后重新加载 Apache 的配置。

相关内容