Ответ 1
Случай Ubuntu 18.04... этот пробег для меня.
/usr/bin/php7.1 /usr/local/bin/composer update
Я застрял в этом несколько дней. Я использую хостинг 1and1, и у них есть свой PHP, настроенный немного странно.
Если я использую только php composer.phar install
, то я использую PHP 4.4.6, что ужасно недостаточно. Тем не менее, я могу запустить php5.5 composer.phar install
, немного php5.5 composer.phar install
, но он все равно терпит неудачу, потому что где-то вдоль строки PHP вызывается снова, но он терпит неудачу, поскольку он использует 4.4.6.
Есть ли способ сказать Composer использовать команду php5.5
? Кто-нибудь успешно получил Composer, настроенный на 1 и 1 хостинг?
Я пытаюсь запустить Laravel (который использует Composer). Я смог сделать это в моем домене GoDaddy, но не 1 и 1.
Случай Ubuntu 18.04... этот пробег для меня.
/usr/bin/php7.1 /usr/local/bin/composer update
На xubuntu у меня был php 7.2 по умолчанию. Но нужно было запустить композитора с php 5.6.
Так что это сработало для меня:
php5.6 /usr/bin/composer
У меня тоже есть общий хостинг на 1 & 1 (ionos) и вот что мне нужно было сделать:
если вы войдете в систему как root ssh, вы можете создать ~/.bash_profile и добавить
alias php="php7.1"
alias composer="php7.1 composer.phar"
так что теперь вы можете использовать команды, которые вы обычно используете, и это просто работает. (поместите composer.phar в корневой каталог вашего проекта)
Затем убедитесь, что ваш файл laravel composer.lock с вашего компьютера dev подключен к папке вашего проекта на 1and1 и запустите
composer install
Используя этот совет от @tobymackenzie: на общих хостах вы действительно должны просто запустить установку composer (не обновлять!) Из файла composer.lock, который вы создали на своем компьютере. Таким образом, использование памяти остается очень низким.
У меня все еще были проблемы STDIN с командами кустарного промысла, поэтому убедитесь, что вы изменили файл .env на
APP_ENV=local
потому что его установка на производство генерирует бесконечные предупреждения STDIN, поскольку он ждет, пока вы наберете yes
. По крайней мере, на моем счету это так.
Надеюсь, это кому-нибудь поможет.
Попробуйте этот подход
ea-php72 /opt/cpanel/composer/bin/composer
Вы можете изменить свой PATH
чтобы переопределить версию php.
PATH="/home/user/bin:$PATH"
В /home/user/bin
(или любой другой каталог действительно) создайте символическую ссылку с именем php в двоичный файл php5.
Другой вариант, используйте псевдоним оболочки:
alias php="/path/to/php5"
Просто добавьте приведенный ниже код в ваш файл composer.json, чтобы установить другую версию php.
"config": {
"platform": {
"php": "7.1.3"
}
}
Вы можете попытаться скопировать файлы php и php-config в /usr/local/bin. Этот путь имеет более высокий порядок приоритета и должен переопределять папку /usr/bin без необходимости отключения SIP. Это то, что я сделал.
php5.5 composer.phar install
не выполняется, потому что ваш composer.json
говорит ему, чтобы он запускал php
а не php5.5
, отредактировал файл composer.json
заменив ссылки на php-скрипты на php5.5
. Пример:
Из:
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
Для того, чтобы:
"post-root-package-install": [
"php5.5 -r \"copy('.env.example', '.env');\""
],
Даже при этом 1and1 имеет ограничение памяти для выполнения скриптов, поэтому php5.5 composer.phar install
не будет терпеть неудачу, но также не завершит ее выполнение. Вы все равно можете запустить скрипты post install вручную.
Я использовал Laravel webapps для 1and1 без каталога vendor
, следуя этому руководству: Разверните Laravel Webapp до 1 и 1
composer
- это бинарный скрипт PHP, использующий Unix Shebang для определения, какой интерпретатор выполнять.
[email protected]:~# head /usr/local/bin/composer -n 5
#!/usr/bin/env php
<?php
/*
* This file is part of Composer.
*
/usr/bin/php7.1 /usr/local/bin/composer update
Так что, если вы работаете с composer
без какой-либо конкретной опции, он будет использовать вашу версию PHP в /usr/bin/env php
(это ваш PHP по умолчанию)
У нас может быть много версий PHP внутри вашего Linux, и вы можете гибко использовать какую версию PHP для выполнения так, как вы хотите, следующим образом:
[email protected]:~# /usr/bin/php7.1 /usr/local/bin/composer update
Или просто
[email protected]:~# php7.1 /usr/local/bin/composer
[email protected]:~# php7.2 /usr/local/bin/composer
[email protected]:~# php7.3 composer
...
Чтобы проверить и найти все установленные пакеты PHP, перейдите в /usr/bin/
[email protected]:~# ls /usr/bin/ | grep php
php
php5.6
php7.1
php7.2
php7.3
php-config
php-config7.1
phpdbg
phpdbg5.6
phpize
phpize7.1
Знайте, этот вопрос немного устарел... но если вы загрузите composer в корень своего приложения:
https://getcomposer.org/download/
Вместо того, чтобы полагаться на глобального композитора, вы можете запустить:
php56 composer.phar {ваша команда}
или я верю, что новые версии Homstead будут выглядеть так:
php7.1 composer.phar {ваша команда}
https://laracasts.com/discuss/channels/laravel/run-composer-commands-with-different-php-versions