1

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

运行 composer install 时,它使用系统默认的 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 安装并启用。

4

1 回答 1

2

这里有不止一个问题。

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

composer install --ignore-platform-reqs

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


但是如果你真的想用不同的运行时执行作曲家......

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
于 2020-02-12T13:16:17.303 回答