Как стать автором
Обновить

Настройка PHP для работы Composer

Введение


На днях я столкнулся с такой трудностью, когда работал с настройкой 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 в консоль пользователя, и произвел следующее:

  1. Создал каталог ~/.local/bin
  2. Создал в директории ~/.local/bin ссылку на PHP (Все версии PHP установленные через ISP Manager хранятся в директории /opt). Название ссылки должно быть php
  3. Создал файл ~/.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

  4. Запустил source ~/.profile

Заключение


После всех манипуляций, теперь набрав в консоли команду php -v от прав пользователя, получил ту версию PH, на которую установил ссылку. Но если набрать от root прав эту команду, получил версию Native PHP.

Проблема решена. Теперь когда запустил composer от прав пользователя, он обращается к той версии php, которая указана в ссылке.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.