在 Apache 下运行多个版本的 PHP,但需要来自 .deb 文件的模块

在 Apache 下运行多个版本的 PHP,但需要来自 .deb 文件的模块

我有一个设置,不幸的是,我遇到了应用程序所需的库包和我的 PHP 版本之间的版本限制。

我现在正在运行 PHP 5.4,但该模块仅与 5.3 兼容,这让我陷入困境。

我知道我可以使用 fcgi 运行多个版本的 PHP,但是是否可以使用不同的模块分别运行它们,如果可以,我该如何实现该模块(该模块打包为带有定义依赖项的 .deb 文件)?

答案1

是的,这是可能的。您只需要将一些 php 用作 apache 模块,将其他 php 用作 cgi。每个 php 都可以有自己的 php.ini,其中包含要下载的唯一模块列表。

例如我使用 php-5.3.27 作为 apache 模块,使用 php-5.2.17 作为 cgi,因为我们的一个应用程序需要 5.2.x,但在 5.3.x 上不起作用

适用于 php-5.2

Loaded Configuration File   /usr/local/php-5.2.17/lib/php.ini 

适用于 php-5.3

Loaded Configuration File   /etc/php.ini

您可以在 configure 选项中设置查找 php.ini 的路径

--with-config-file-path

答案2

为了在单个平台上容纳多个版本的 PHP,您需要更改配置文件、make 文件(或 rpm 的 spec 文件),以便二进制文件和支持文件具有类似 php53(.ini) 和 php54(.ini)、/usr/lib64/php54/mo​​dules、yada、yada、yada 的名称。更改配置选项很重要,这样它就知道在哪里查找自己的模块、ini 等……安装一个版本并更改文件上的名称不会更改编译的内部设置。(您可以将模块编译到二进制文件中,但我不建议这样做。)

您可以通过从 php 创建到您选择的版本的链接来设置默认版本。

就 Apache 而言,您可以尝试以下操作:

FcgidWrapper "/usr/bin/php-cgi53 -c /etc/httpd/conf/php53.ini" .php

或者

FcgidWrapper "/usr/bin/php-cgi54 -c /etc/httpd/conf/php54.ini" .php5

希望这对你有帮助。

相关内容