如何在不升级/影响现有 PHP 的情况下创建 PHP 5.4 的可移植版本,因为该服务器上运行着实时网站。
这就像运行 2 个 PHP 实例?
换句话说,我如何构建 PHP 以使其在运行时不会替换旧的make install
?
如何在不升级/影响现有 PHP 的情况下创建 PHP 5.4 的可移植版本,因为该服务器上运行着实时网站。
这就像运行 2 个 PHP 实例?
换句话说,我如何构建 PHP 以使其在运行时不会替换旧的make install
?
根据澄清的问题更新
首先,您要构建新的 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 端口并同时启动它们。
你看过像Webtatic这样的东西吗?它可能会为您完成这项工作。