Итак, у меня есть поле 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
Это делает меня еще на один шаг, но затем некоторые команды после установки из 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.
Изменить: также предположим, что я хочу сделать это из обычной учетной записи пользователя (т. Е. Без корневых разрешений).
Может быть, вы можете попытаться исправить окружающую среду!
$ 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.