多个PHP版本在同一个盒子上

时间:2009-12-15 06:28:20

标签: php server-configuration multiple-versions

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

3 个答案:

答案 0 :(得分:4)

是的,有可能。事实上,许多服务器都以这种方式运行。您可能会不时看到.php4和.php5扩展名,指出应该处理特定脚本的版本。

ServerFault解决了这个问题

Running php4 and php5 along side each other

答案 1 :(得分:3)

您可以使用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值的第一部分。 即格式是: 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等网址)提供并由PHP 5.5处理

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

答案 2 :(得分:0)

可能性是使用一个版本的PHP作为Apache模块,另一个版本作为CGI使用;但是我觉得更好的想法是:

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

通过这种方式,您拥有完全不同的环境,彼此独立工作,您可以在每个环境中配置/修改您想要的任何内容,而不会破坏任何其他环境。

(如果你不想在你的URL中有端口号,我想你可以把代理放在不同的Apache实例前面,所以似乎只有一个) < / p>