5

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

4

3 回答 3

4

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

ServerFault 解决了这个问题

并排运行 php4 和 php5

于 2009-12-15T06:29:33.817 回答
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和Docker 容器/etc/apache2/sites-available/etc/apache2/sites-enabled相应文件夹转发。如果您的本地网站和/或 apache 配置位于不同的文件夹中,请替换-vvalue 的第一部分。即格式为: 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。附属说明:这是我团队的博客。

于 2017-05-03T09:57:44.333 回答
0

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

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

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

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

于 2009-12-15T06:31:45.887 回答