在Ubuntu服务器上安装多个PHP版本

5

初始情况:

我有一个Ubuntu 12.04服务器,托管了3个网站(使用Apache 2.2.22)

我如何为其中一个网站安装另一个PHP版本? (其他两个网站应保持原样)

当前的PHP版本:PHP 5.3.10 所需的PHP版本:PHP 5.6.16

到目前为止,我已经做了/理解了什么:

我已经尝试过PHPBrew: http://phpbrew.github.io/phpbrew/

我成功地为命令行安装了PHP 5.6.16(使用PHPBrew),但Apache仍然使用PHP 5.3.10。

我知道自己最终需要一个*.so文件,我需要将它放在/etc/apache2/httpd.conf文件中。(此文件目前为空) (通过LoadModule...)

但是: 我没有任何*.so文件。 我这样安装PHPBrew:

phpbrew install 5.6.16 +default +mysql +mcrypt

我认为我应该添加+apxs2=/usr/bin/apxs2,但如果我这样做,我会收到“Exception: apxs binary is not executable: /usr/bin/apxs2”错误消息。

我该如何解决这个问题?

或者有没有更好的方法在一个服务器上运行不同版本的PHP? 最好的方法是什么?


1
为了解决“apxs二进制文件不可执行”的问题,我设法执行sudo apt-get install apache2-dev。现在我有了php5.6.16.so文件(在重新安装时使用+apxs2=/usr/bin/apxs2)。在etc/apache2/mods-available/php5.load中是新的php5.6.16.so文件,在重启apache2后它可以工作。最后一个问题是:是否可以为每个虚拟主机创建一个php5.load文件? - Biberfan
当我尝试时,出现以下错误信息:以下信息可能有助于解决问题:以下软件包存在未满足的依赖关系: apache2-dev: 依赖于 libapr1-dev,但它将不会被安装 依赖于 libaprutil1-dev,但它将不会被安装 E: 无法纠正问题,您已经拥有损坏的软件包。 - kwoxer
看起来那个软件包不再可用了。 - kwoxer
你确定你没有.so文件吗?你检查过/usr/lib/apache2/modules/了吗? - Code Your Dream
1个回答

1

请仔细检查 .so 文件,它们应该在 `/usr/lib/apache2/modules/` 目录下。

然后您需要编辑 /etc/apache2/mods-enabled/php5.load 文件,并指定对应于您的安装的 .so 文件,例如:

LoadModule php5_module /usr/lib/apache2/modules/libphp5.6.16.so

在同一台计算机上运行多个PHP版本的替代解决方案是使用Docker,详见我在另一个主题中的回答:在同一台计算机上运行多个PHP版本

请注意,使用此解决方案将在不同的端口上提供不同的PHP版本。


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