如何在运行 "composer install"时指定使用特定的PHP版本?

How to specify to use a specific PHP version when running "composer install"?

在服务器中,我们有一些 webapp,实际上同时安装了 7.2 和 7.4。

安装运行 composer时,系统默认使用PHP设置,实际上是7.4.

事实上,

$ which php
/usr/bin/php

$ php -v
PHP 7.4.2 (cli) ...

$ ls -la /usr/bin/php
lrwxrwxrwx 1 root root 21 Nov 20 11:20 /usr/bin/php -> /etc/alternatives/php

$  ls -la /etc/alternatives/php
lrwxrwxrwx 1 root root 15 Feb 12 11:08 /etc/alternatives/php -> /usr/bin/php7.4

我必须执行的应用 composer install 是 PHP 7.2,所以我需要作曲家尊重这一点。

我确定它正在尝试使用 PHP 7.4,因为它抱怨缺少 php7.4-mbstring。但它已为 PHP 7.2 安装并启用。

这里的问题不止一个。

首先,您很可能真的不需要告诉 composer 使用一个或另一个解释器。如果您 知道 平台要求在运行时是正确的,但运行时可执行文件与 install 可执行文件不同,您可以简单地说:

composer install --ignore-platform-reqs

这样作曲家将不会检查运行时和扩展是否与您在 composer.json 上声明的相匹配(但您需要确保在项目实际运行的服务器上满足这些要求) .


但是如果你真的想用不同的运行时来执行 composer...

composer 使用 shebang + env 来确定要使用哪个 PHP 可执行文件。

基本上它使用 #!/usr/bin/env php 来查找可用的 php 可执行文件,就像您所做的那样。

如果您想使用不同的可执行文件,只需明确说明即可。

例如如果您的 PHP 7.2 安装在 /usr/bin/php7.2 并且作曲家安装在 /usr/local/bin/composer,您只需要做:

# /usr/bin/php7.2 /usr/local/bin/composer install