3

如何在不升级/影响现有 PHP 的情况下创建 PHP 5.4 的可移植版本,因为该服务器上运行着实时网站。

这就像运行 2 个 PHP 实例?

换句话说,我如何构建 PHP 以使其在运行时不会替换旧的make install

4

2 回答 2

1

根据澄清的问题更新

首先,您要构建新的 PHP 版本,以便它安装到不同的位置,而不会覆盖现有版本。为此,请按照 PHP 构建说明进行以下更改:

执行时./configure,添加以下参数:--prefix=/opt/php54

这会将您的新 PHP 版本放在/opt/php54/...默认位置,而不是放在任何位置。


原始答案

单个 Apache Web 服务器一次只能使用一个 mod_php 版本。如果您想使用多个版本,最简单的方法可能是使用 CGI 设置第二个 PHP 版本并使用 Scott 答案的修改版本。

在主 Apache 配置文件中设置 CGI:

ScriptAlias /php54-cgi /usr/lib/cgi-bin/php54-cgi
Action application/x-httpd-php54 /php54-cgi

接下来,您需要设置一个绑定到端口 8080 的虚拟主机并告诉它使用此版本的 PHP

<VirtualHost [IP]:8080>
  DocumentRoot [DOCUMENT_ROOT]
  DirectoryIndex index.php
  ServerName [HOSTNAME]:8080
  <Directory [DOCUMENT_ROOT]>
    AllowOverride All
    Allow from All
  </Directory>

  <FilesMatch "\.php">
    SetHandler application/x-httpd-php52
  </FilesMatch>
</VirtualHost>

(注意:这不是我的想法,没有检查语法是否正确,因此可能需要一些调整。)

通过此配置,虚拟主机中的 PHP 脚本将使用指定的 PHP 版本执行。


另一种方法,可能更难,但从长远来看也更灵活,是运行两个完全独立的 Apache 实例(或一个 Apache 和一个其他服务器,如 nginx),每个实例都有自己的 PHP 版本。

Apache 有一些关于这样做的文档,但它并不完整。

困难的部分是 Ubuntu 试图帮助设置您的 Apache 配置,但它对事物的位置做出假设,因此您在管理这两者时会遇到问题。使用不同的服务器,例如一个 Apache 和一个 nginx,或者一个 Apache 和一个 Lighttpd,会容易得多,因为它们的配置文件不会相互冲突。只需将一个设置为 80 端口,另一个设置为 8080 端口并同时启动它们。

于 2013-03-13T04:40:22.033 回答
0

你看过像Webtatic这样的东西吗?它可能会为您完成这项工作。

于 2013-03-13T04:35:22.147 回答