除了 CentOS 6.7 中的 PHP 5.3.3 之外,是否有任何类型的“官方”存储库可用于升级 PHP?
我正在尝试利用 SCL 存储库,但发现各种特性似乎都指向这种双 PHP 安装方法。
使用 SCL 存储库时,您安装了多个版本的 PHP。基础包(本例中为 PHP 5.3.3)位于所有常用的 RH 位置,例如 /usr/bin/php。 SCL 版本,我们现在选择 5.4,安装为 php54-php 并位于 /opt/rh/php54/ 中。然后你告诉 Apache 通过 /etc/http/config.d/ 中激活的 php 配置来运行哪一个。但是,在运行 php-cli 时,您必须使用 shell 的 source 命令或 cron 或 sudo 作业等的 scl enable 命令来声明 php54 版本。如果不这样做,则默认安装 5.3.3。
特殊之处在于尝试让 cron 作业正确启动。使用 WP-CLI,因为 cURL/wget/PHP 调用返回无效的用户名/密码错误,看起来它运行作业,但似乎没有执行 smartgroup 重建等操作。从“设置”页面手动运行 cron 作业效果很好。
答案1
注意:我自己不使用 CentOS 或 RHEL 发行版,但在(遥远的)过去使用过。
根据https://www.softwarecollections.org/en/scls/rhscl/rh-php56/,看起来该scl enable
命令就是您所需要的。
当安装PHP5.4/opt/rh/php54
和PHP5.3时/usr/bin/php
,您需要配置系统环境以选择更新的PHP。这是使用环境变量(例如$PATH
.
由于 CiviCRM 已安排需要以 Web 服务器用户身份运行的任务,因此您需要确保针对运行任务的帐户进行此更改。如果这是一台专用于托管 CiviCRM 的计算机,那么为所有用户更新首选 PHP 似乎是明智的途径。如果其他用户可能会受到更改的负面影响,您可以使更改更加具体。
运行scl enable php54
将执行此操作,以便可以将该命令添加到/etc/bashrc
(系统范围)或~/.bashrc
(每个用户)。
/etc/profile
您还可以在和/etc/profile.d
或中配置系统路径~/.bash_profile
。如果它存在于 CentOS 上,则可以通过添加条目来确定系统路径/etc/paths.d
。 (我不确定跑步是否scl enable php54
会仅有的改变你的$PATH
- 如果不是那么这可能不是一个完整的解决方案。)
如果您有命令行 PHP 脚本,这些脚本以 开头指定旧 PHP 的完整路径#!/usr/bin/php
,则需要修改这些脚本以使用您首选 PHP 安装的路径(或替换为#!/usr/bin/env php
如 CiviCRM 的代码库中所示。如果有指定 PHP5.3 完整路径的 cron 条目,则同样适用。