Как указать использование указанной c PHP версии при запуске "composer install"? - PullRequest
1 голос
/ 12 февраля 2020

На сервере у нас есть несколько веб-приложений, и на самом деле установлены как 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, поэтому мне нужно composer уважать это.

Я уверен, что он пытается использовать PHP 7.4, потому что жалуется на отсутствие php7.4-mbstring. Но он установлен и включен для PHP 7.2.

1 Ответ

2 голосов
/ 12 февраля 2020

Здесь есть более одной проблемы.

Во-первых, вам, скорее всего, не нужно указывать composer, чтобы использовать тот или иной переводчик. Если вы знаете , что требования платформы будут правильными во время выполнения, но исполняемый файл во время выполнения не совпадает с исполняемым install, вы можете просто сказать:

composer install --ignore-platform-reqs

Таким образом, composer не будет проверять, что среда выполнения и расширения соответствуют заявленным вами composer.json (но вам необходимо убедиться, что эти требования выполняются на сервере, на котором фактически выполняется проект).


Но если вы действительно хотите выполнить composer с другой средой выполнения ...

composer использует shebang + env, чтобы определить, какой PHP исполняемый файл собирается использовать.

В основном он использует #!/usr/bin/env php, чтобы найти, какой исполняемый файл php доступен, так же, как вы делали.

Если вы хотите использовать другой исполняемый файл, вы просто необходимо четко указать это.

Например, если ваш PHP 7.2 установлен на /usr/bin/php7.2 и composer на /usr/local/bin/composer, вам просто нужно сделать:

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