![在 Apache 下运行多个版本的 PHP,但需要来自 .deb 文件的模块](https://linux22.com/image/615437/%E5%9C%A8%20Apache%20%E4%B8%8B%E8%BF%90%E8%A1%8C%E5%A4%9A%E4%B8%AA%E7%89%88%E6%9C%AC%E7%9A%84%20PHP%EF%BC%8C%E4%BD%86%E9%9C%80%E8%A6%81%E6%9D%A5%E8%87%AA%20.deb%20%E6%96%87%E4%BB%B6%E7%9A%84%E6%A8%A1%E5%9D%97.png)
我有一个设置,不幸的是,我遇到了应用程序所需的库包和我的 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/modules、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
希望这对你有帮助。