【问题标题】:Multiple PHP versions on the same box同一个盒子上有多个 PHP 版本
【发布时间】:2010-12-26 16:58:23
【问题描述】:

是否可以在同一个盒子上运行多个版本的 PHP(如 rails)。这是我的问题,我需要开始一个新项目的开发,并计划使用 PHP 5.3,以便我可以使用最新的 Zend 框架和活动记录。
但是,我需要托管我的应用程序的机器有 PHP 4.4,并且那里托管了其他几个应用程序。我不想像过去那样升级服务器上的 PHP 版本,在升级 PHP 版本和不推荐使用的功能时,我遇到了很多问题。
我想知道是否可以在同一个盒子上拥有多个版本的 PHP,然后以某种方式指定您希望应用程序加载的版本(类似于 rails)

【问题讨论】:

  • 看来这是服务器故障的问题...

标签: php server-configuration multiple-versions


【解决方案1】:

是的,这是可能的。事实上,很多服务器都是这样操作的。您可能会不时看到 .php4 和 .php5 扩展名,指示应使用哪个版本来处理特定脚本。

ServerFault 解决了这个问题

Running php4 and php5 along side each other

【讨论】:

    【解决方案2】:

    您可以使用 Docker 在同一个机器上运行多个 PHP 版本。

    一个示例命令是:

    sudo docker run -d -p 8055:80 -v /var/www:/var/www \
      -v /etc/apache2/sites-available:/etc/apache2/sites-available \
      -v /etc/apache2/sites-enabled:/etc/apache2/sites-enabled \
      codeyourdream/apache-sendmail-php55
    

    以下是该命令的作用:

    • 它将你本地的/var/www/etc/apache2/sites-available/etc/apache2/sites-enabled转发到Docker容器的相应文件夹。如果您的本地网站和/或 apache 配置位于不同的文件夹中,请替换 -v 值的第一部分。 IE。格式为: docker run -v /host/directory:/container/directory -other -options image_name command_to_run
    • 它将本地机器的 8055 端口转发到 Docker 容器的 80 端口
    • 它从“codeyourdream/apache-sendmail-php55”镜像运行容器

    如果您运行此命令,您的所有本地网站都应该可以通过端口 8055 访问(即通过像 http://localsite:8055 这样的 URL)并由 PHP 5.5 处理

    有关详细信息,请参阅https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker。 附属说明:这是我团队的博客。

    【讨论】:

      【解决方案3】:

      一种可能性是使用一个版本的 PHP 作为 Apache 模块,而另一个版本作为 CGI ;但我更喜欢的一个想法是:

      • 几个不同的 Apache 实例,
      • 每一个监听不同的端口(例如,PHP 4.4 在端口 44000,PHP 5.3.1 在端口 53100)
      • 而且每个人都使用不同版本的 PHP

      这样,您就拥有完全不同的环境,它们彼此独立工作,您可以在每个环境中配置/修改任何您想要的东西,而不会冒破坏其他环境的风险。

      (如果您不想在 URL 中包含端口号,我想您可以在不同的 Apache 实例前面放置一个代理,所以似乎只有一个)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-19
        • 1970-01-01
        • 2012-03-30
        • 1970-01-01
        • 1970-01-01
        • 2015-04-14
        • 1970-01-01
        相关资源
        最近更新 更多