Используйте разные исполняемые файлы CLI версии PHP для одной команды

Итак, у меня есть поле Gentoo с тремя установленными версиями PHP (не забудьте причины):

  1. /usr/bin/php -> /usr/lib64/php5.4/bin/php
  2. /usr/bin/php5.5 -> /usr/lib64/php5.5/bin/php
  3. /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 

Это делает меня еще на один шаг, но затем некоторые команды после установки из composer.json Laravel's composer.json вступают в игру, а установка падает.

Это связано с тем, что команды composer.json выглядят следующим образом:

 "post-install-cmd": [ "php artisan clear-compiled", "php artisan optimize" ], 

Как вы можете видеть, интерпретатор «default» используется снова!

Теперь правильные PHP-файлы начинаются со следующего shebang:

 #!/usr/bin/env php 

Это хорошая функция, поскольку PHP-интерпретатор можно найти в разных местах в разных системах. К сожалению, в этом случае команда env возвращает путь к первому исполняемому файлу, который находит в $PATH окружения $PATH .

Как я могу изменить текущую среду сеанса или какой трюк выполнить для выполнения всего процесса установки Laravel. Команда php будет вызывать /usr/bin/php5.6 вместо /usr/bin/php ?

Я не хочу изменять $PATH или изменять файлы, такие как composer , composer.json или утилита CLA Laravel CLI.


Изменить: также предположим, что я хочу сделать это из обычной учетной записи пользователя (т. Е. Без корневых разрешений).

Related of "Используйте разные исполняемые файлы CLI версии PHP для одной команды"

Может быть, вы можете попытаться исправить окружающую среду!

 $ php -v PHP 5.4.x (cli) ... $ set PATH="/usr/lib64/php5.6/bin:$PATH" $ php -v PHP 5.6.x (cli) ... 

Или, если вы не хотите изменять PATH для сеанса оболочки, вы можете изменить это значение только для текущей команды:

 $ php -v PHP 5.4.x (cli) ... $ env PATH="/usr/lib64/php5.6/bin:$PATH" php -v PHP 5.6.x (cli) ... $ php -v PHP 5.4.x (cli) ... 

Определите, где находится текущая общая php команда и к которой она указывает, с which php .

Это даст вам путь к символической ссылке, как вы упоминаете в своем вопросе

/usr/bin/php -> /usr/lib64/php5.4/bin/php

Отредактируйте символическую ссылку, чтобы указать, на какую версию php вы хотите сейчас, см. Здесь https://unix.stackexchange.com/questions/88824/how-can-i-edit-symlinks

Когда вы закончите, просто измените процесс.

UPDATE: вы также можете добавить alias для текущего пользователя, отредактировав ~/.bashrc и добавив следующее

alias php='/usr/bin/php5.6'

посмотрим, получится ли это

Поскольку PHP7 появился, Debian Linux по умолчанию создает разные исполняемые файлы для PHP версий 5 и 7 в / usr / bin (если вы устанавливаете обе версии).

Вызов этих разных версий из командной строки прост, как сейчас:

 kkarski@debian:~ $ php5 -v PHP 5.6.26-0+deb8u1 (cli) (built: Sep 21 2016 12:37:50) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies kkarski@debian:~ $ php -v PHP 7.0.9-1~dotdeb+8.1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.9-1~dotdeb+8.1, Copyright (c) 1999-2016, by Zend Technologies 

Это, очевидно, полезно только для простых скриптов. Для чего-либо большего (композитор, ремесленник и т. Д.) Вам придется изменить переменную PATH.

Чтобы изменить версию, которую использует сервер Apache, вам нужно:

 root@debian:~# a2dismod php5 && a2enmod php7.0 Module php5 disabled. To activate the new configuration, you need to run: service apache2 restart Considering conflict php5 for php7.0: Enabling module php7.0. To activate the new configuration, you need to run: service apache2 restart 

и наоборот, если вы хотите использовать более низкую версию PHP.

Упомяните об этом, если у кого-то есть подобные проблемы на Debian.

Исполняемый файл PHP по умолчанию можно найти, используя:

 $ which php 

В большинстве случаев это ссылка на конкретную версию PHP:

 lrwxrwxrwx 1 root root 21 aug 15 2016 /usr/bin/php -> /usr/bin/php7.1 

Чтобы изменить его на другую версию, просто переместите ее в другую

 $ sudo rm /usr/bin/php $ sudo ln -s /usr/bin/php5.6 /usr/bin/php 

Перед повторной установкой вы должны убедиться, что установлена ​​целевая версия PHP.