Итак, у меня есть поле Gentoo с тремя установленными версиями PHP (не забудьте причины):
-
/usr/bin/php
→/usr/lib64/php5.4/bin/php
-
/usr/bin/php5.5
→/usr/lib64/php5.5/bin/php
-
/usr/bin/php5.6
→/usr/lib64/php5.4/bin/php
Я хочу установить структуру Laravel с помощью композитора:
$ composer create-project laravel/laravel --prefer-dist
Однако это порождает ошибку, поскольку Laravel требует PHP > 5.5.9, а интерпретатор php
по умолчанию 5.4.
Поэтому я выдаю еще одну команду:
$ /usr/bin/php5.6 /usr/bin/composer create-project laravel/laravel --prefer-dist
Это делает меня еще на один шаг, но затем некоторые команды после установки из Laravel composer.json
вступают в игру, а сбой установки.
Это связано с тем, что команды composer.json
выглядят следующим образом:
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
Как вы можете видеть, интерпретатор по умолчанию используется снова!
Теперь правильные PHP файлы начинаются со следующего shebang:
#!/usr/bin/env php
Это хорошая функция, поскольку PHP-интерпретатор можно найти в разных местах в разных системах.
К сожалению, в этом случае команда env
возвращает путь к первому исполняемому файлу, который он находит в переменной $PATH
.
Как я могу изменить текущую среду сеанса или какой трюк выполнить для выполнения всего процесса установки Laravel. php
команда будет вызывать /usr/bin/php5.6
вместо /usr/bin/php
?
Я не хочу изменять переменную $PATH
или изменять файлы типа composer
, composer.json
или утилиту CLAR Laravel artisan
.
Изменить: также предположим, что я хочу сделать это из обычной учетной записи пользователя (т.е. без корневых разрешений).