基于 EasyApache 4 和 CLI 的 PHP 实用程序

随着 WHM 58 中 EasyApache 4 的发布,PHP 的管理方式发生了各种变化。 最明显的是 EasyApache 4 支持同时安装多个 PHP 版本。 但是,由于服务器上安装了多个版本的 PHP,很容易忘记基于命令行的 PHP 实用程序及其 PHP 要求。

某些 PHP 包(如 Composer、Drush 和 WP-cli)更喜欢与最新版本的 PHP 一起运行。 不幸的是,拥有多个 PHP 版本可能意味着当您直接调用它时不知道哪个 PHP 将执行该实用程序。 本文将详细介绍几种方法来指定在此类情况下应使用哪个 PHP 版本。

飞行前检查:

  • 这些说明专门针对在版本 58 之前运行 WHM 的基于 cPanel 的服务器。
  • 遵循这些示例可能需要通过 SSH 进行命令行访问。
  • 服务器需要激活 EasyApache 4。
  • 遵循提供的示例需要 PHP 7。

选项 #1:直接调用 PHP 二进制文件

解决这些问题的最基本选项是在执行脚本之前直接调用所需的 PHP 二进制文件。 虽然这可能是有效的,并且在大多数情况下都会按预期工作,但某些实用程序在使用此方法时将无法工作。

您可能需要先尝试此方法,如果此方法无法按预期工作,则继续使用选项 #2; 一般来说,这应该适用于执行基本的 PHP 代码。

/opt/cpanel/ea-php70/root/usr/bin/php someScript.php

上述命令将专门调用 7.0 版本的 PHP,并在该版本的 PHP 中执行 someScript.php 文件。 如果它们也安装在服务器上,则可以在以下位置找到替代 PHP 版本:

  • /opt/cpanel/ea-php55/root/usr/bin/php
  • /opt/cpanel/ea-php56/root/usr/bin/php
  • /opt/cpanel/ea-php70/root/usr/bin/php

选项 #2:使用 scl 指定 PHP 版本

如前所述,某些 PHP 实用程序不是作为基本 PHP 文件提供的,而是存储在 法尔 格式。 使用上述指定 PHP 版本的方法,这些实用程序将无法正确执行。 对于这些类型的实用程序,您需要使用名为 `scl` 的命令指定 PHP 版本。

此命令是一个实用程序,允许在打包为“软件集合”的环境中运行软件。 简而言之,“软件集合”是一种为特定软件定义备用位置的方法。 幸运的是,WHM 为 EasyApache 4 支持的各种 PHP 版本提供了预定义的集合。

该命令的语法如下:

scl enable {SoftwareCollection} '{CommandToRun}'

将 {SoftwareCollection} 替换为所需集合的位置 [ea-php55, ea-php56, or ea-php70],然后将 {CommandToRun} 替换为您需要运行的命令、实用程序或脚本。

突出这一点的一个好方法是查看以下输出中的差异:

root@noms [~]# php -v

PHP 5.6.25 (cli)(构建:2016 年 8 月 25 日 17:00:38)
版权所有 (c) 1997-2016 PHP 集团
Zend Engine v2.6.0,版权所有 (c) 1998-2016 Zend Technologies
ionCube PHP Loader v4.7.5,版权所有 (c) 2002-2014,由 ionCube Ltd. 和
Zend Guard Loader v3.3,版权所有 (c) 1998-2014,由 Zend Technologies 提供
Zend OPcache v7.0.4-dev,版权所有 (c) 1999-2015,Zend Technologies

root@noms [~]# scl enable ea-php70 'php -v'

PHP 7.0.10(cli)(构建:2016 年 8 月 25 日 18:04:55)(NTS)
版权所有 (c) 1997-2016 PHP 集团
Zend Engine v3.0.0,版权所有 (c) 1998-2016 Zend Technologies
Zend OPcache v7.0.10,版权所有 (c) 1999-2016,由 Zend Technologies 提供

正如您所看到的,当单独调用 PHP 时,我们得到了默认版本,但是当使用 scl 时,我们显式调用了 PHP 7.0 集合并获得了匹配的结果。

示例 #1:执行实用程序 [Composer]:

root@noms [~]# scl enable ea-php70 'composer --version'

Composer 版本 1.2.0 2016-07-19 01:28:52

示例 #2:运行 PHP 脚本:

root@noms [~]# scl enable ea-php70 './someScript.php'

有了这些关键的提示和技巧,您现在应该具备了在使用 EasyApache 4 的服务器上运行 CLI 实用程序所需的工具。如果您有任何问题或不方便自己进行这些更改,请随时联系 Heroic Support®。