Введение
На днях я столкнулся с такой трудностью, когда работал с настройкой composer на сервере. А именно, на сервере от root прав установлен был PHP 7.0 (Данная версия PHP установлена Native и используется ISP Manager Lite. Из-за этого строго запрещается менять Native версию PHP, так как ISP Manager может дать сбой). Мной предложено одно из решений этой проблемы.
Установка Composer
Инструкцию по командам установке через консоль можно прочитать на официальном сайте. От себя добавлю, что composer файл сохранил в директорию /etc, для того чтобы каждый пользователь видел и мог пользоваться данной утилитой.
Внимание! Composer консольная программа и использует ту версию PHP, которая была установлена Native. Вот тут-то и появляется загвоздка. Так как некоторые проекты уже используют более новую версию PHP, то при composer install (либо composer dump-autoload, либо composer update) может произойти сбой совместимости зависимостей.
Решение проблемы. Установка PHP пользователю
В ISP Manager установил нужную альтернативную версию PHP-FPM. Через пользователя выбрал нужный PHP-FPM.
После всех этих действий зашел по ssh в консоль пользователя, и произвел следующее:
- Создал каталог ~/.local/bin
- Создал в директории ~/.local/bin ссылку на PHP (Все версии PHP установленные через ISP Manager хранятся в директории /opt). Название ссылки должно быть php
- Создал файл ~/.profile
# set PATH so it includes user's private bin if it exists if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi
- Запустил source ~/.profile
Заключение
После всех манипуляций, теперь набрав в консоли команду php -v от прав пользователя, получил ту версию PH, на которую установил ссылку. Но если набрать от root прав эту команду, получил версию Native PHP.
Проблема решена. Теперь когда запустил composer от прав пользователя, он обращается к той версии php, которая указана в ссылке.