每个虚拟主机有专用的 PHP 版本

每个虚拟主机有专用的 PHP 版本

我有一个安装了 PHP7.2 和 PHP5.6 的 Ubuntu 18.04 LTS 服务器。到目前为止,两个虚拟主机的配置相同:

<VirtualHost *:80>
    # domain: php56.test
    # public: /var/www/php56/   

    ServerName php56.test
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/php56

    <Directory /var/www/php56/>
        Require all granted
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

现在我想将 PHP5.6 专用于 php56.test,将 PHP7.2 专用于 php72.test。

我根据网上的几篇文章尝试了 .conf 文件,但未能成功。我只能运行 PHP5.6 或 PHP7.2,但无法同时运行两者,因为专用站点需要同时运行两者。默认 .conf 与 php56.test.conf 上的站点相关。

答案1

您无法使用 mod_php 执行此操作,它一次只能加载一个版本。

您可以在不同版本上运行多个 FPM 实例,或者通过 FCGI 使用 PHP(每个实例的操作方法都在网上流传),但您将失去可能需要的 mod_php 集成(如配置中的 php_flag 和 php_value)。

您也可以混合搭配 - 因此在 mod_php 中有一个版本,在 FCGI 或 FPM 中有一个版本;我之前在 FCGI 下测试时在 mod_php 中使用了“已知良好”的版本,然后在准备好后升级了 mod_php 版本。

或者,您可以运行两个 Apache 安装,每个安装有不同的 mod_php,但这可能会变得更加混乱(并且它们不能共享套接字)。

现代的方法是使用虚拟机或容器进行测试。

答案2

实际上,我找到了一个不需要 .htaccess 的可行解决方案。查看如何在 Ubuntu 18.04 和 16.04 上使用 Apache 安装多个 PHP 版本 -https://tecadmin.net/install-multiple-php-version-apache-ubuntu/

感谢 Rahul Kumar。

相关内容