在同一台服务器上使用多个PHP版本

6
有没有可能在同一台机器上运行多个版本的PHP(就像Rails一样)?这是我的问题,我需要在一个新项目上开始开发,并计划使用PHP 5.3,以便我可以使用最新的Zend框架和Active Record。然而,我需要托管我的应用程序的机器有PHP 4.4,并且还有其他几个应用程序托管在那里。我不想升级服务器上的PHP版本,因为过去我在升级PHP版本和弃用函数时遇到了很多问题。
我想知道是否可能在同一台机器上拥有多个版本的PHP,然后以某种方式指定您要加载的应用程序版本(类似于Rails)。

似乎这是一个适合在服务器故障网站上提问的问题... - Myles
3个回答

4

是的,这是可能的。实际上,许多服务器都是这样运行的。您可能会时不时地看到 .php4 和 .php5 扩展名,表示应该使用哪个版本来处理特定的脚本。

ServerFault回答了这个问题。

同时运行php4和php5


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等URL处理),并由PHP 5.5处理。

请查看https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker以获取更多详细信息。 附属说明:这是我的团队博客。


0
一种可能性是将一个版本的PHP作为Apache模块,另一个版本作为CGI;但我更喜欢的想法是:
  • 几个不同的Apache实例,
  • 每个实例监听不同的端口(例如,PHP 4.4在44000端口上,PHP 5.3.1在53100端口上)
  • 并且每个实例使用不同版本的PHP
这样,您就拥有完全不同的环境,它们彼此独立工作,并且您可以在每个环境中配置/修改任何您想要的内容,而不会冒着破坏其他环境的风险。 (如果您不想在URL中使用端口号,我想您可以在不同的Apache实例之前放置代理,这样它看起来只有一个实例)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接