我正在尝试设置具有多个 php 版本的 CentOS 服务器。
到目前为止,我已经通过安装 REMI 软件集php56
和php70
运行不同版本的 Apache 等成功完成了此操作。
到目前为止一切顺利。php
在命令行中输入不会提供任何信息,但php56 -v
例如会提供。到目前为止,这是预期的行为。
我现在有几个问题:
1 - 我现在很好奇,如果软件中有php
在命令行上使用的脚本,会发生什么情况。比如 Composer 脚本?显然,如果脚本尝试运行命令行 php,它们会失败。
1a.例如, 我可以假设我必须在php
和 实际之间创建一个符号链接吗?php70
1b. 是否还有其他可执行文件需要链接?我看到某个地方phar
有链接文件,还有一些其他文件。我如何知道所有需要链接的文件?
2 - 如果我尝试phpmyadmin
通过 YUM 安装,它会要求下载php 5.4
软件包。这本身就让我产生了许多疑问。在这种情况下我该怎么办,因为我绝对不希望 5.4 出现在我的系统附近。而且我认为,如果我执行上述步骤 1a,YUM 显然仍会要求下载 php 依赖项。有没有办法可以阻止这种情况,或者可以向 YUM“解释”php 已经安装为 php70?或者只是忽略依赖项?
抱歉,如果这些问题很愚蠢,我对 Linux 的经验有限,对 YUM 的了解也不够。而且这是我第一次遇到多版本问题。谢谢!
更新:
我知道我已经安装了特定版本的软件包,这主要是因为我想要多个版本的 Apache。我想问题是如何处理想要在命令行上运行 php 的其他软件,如何处理 YUM php 依赖项,以及这种情况的常用方法是什么?
答案1
注意:PHP 5.6 和 7.0 都已达到使用寿命终止状态,并且仅由社区提供支持最大努力;我衷心推荐使用支持的版本(7.1+)。
1 - 我现在很好奇在命令行上使用 php 脚本的软件会发生什么。
由于大多数脚本使用“/usr/bin/env php”,因此您只需在运行脚本之前启用正确的版本
module load php71
php -v
composer install
1a. 例如,我可以假设我必须在 php 和实际的 php70 之间创建一个符号链接吗?
是的,它可以工作,你也可以安装php56-系统路径或者php70-系统路径可以为你完成工作的软件包
2 – 如果我尝试通过 YUM 安装 phpmyadmin..
打包应用程序依赖于默认的 PHP,并且不知道已安装的 SCL。
对于多个版本,安装将更加简单:
- 来自 remi-php## 存储库的默认版本 (php-* 包)
- 来自 remi-safe 存储库的替代版本(php##-php* 包)
查看向导说明。
注意:EPEL 存储库中的应用程序(例如 phpMyAdmin、GLPI、Wordpress、roundcubemail……)不适用于最新的 PHP 版本(7+),因此您还必须从“remi”存储库中获取最新版本(如果可用)。