【问题标题】: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
【解决方案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 实例前面放置一个代理,所以似乎只有一个)