Установка Composer на CentOS с несколькими версиями PHP

Вопрос или проблема

У меня установлены несколько версий PHP (5.6 и 7.2) на сервере CentOS 7.

Поиск в Google установки Composer на CentOS 7 показывает то же руководство, только в разных блогах с этими шагами:

$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
$ chmod +x /usr/local/bin/composer
$ composer -V    
Composer version 1.5.2 2017-09-11 16:59:25

Однако сразу выдалась ошибка. Поэтому я изменил эту команду:

$ curl -sS https://getcomposer.org/installer | php

на:

$ curl -sS https://getcomposer.org/installer | php72

Это скачало файл, но когда я попробовал использовать composer -V (после других шагов), он выдает такую ошибку:

/usr/bin/env: php: No such file or directory

Поэтому я открыл файл /usr/local/bin/composer в vim, чтобы увидеть строку в самом начале:

#!/usr/bin/env php

Я изменил её на

#!/usr/bin/env php72

но выполнение composer -V теперь показывает:

PHP Fatal error:  Uncaught PharException: phar "/usr/local/bin/composer" has a broken signature in /usr/local/bin/composer:23
Stack trace:
#0 /usr/local/bin/composer(23): Phar::mapPhar('composer.phar')
#1 {main}
  thrown in /usr/local/bin/composer on line 23

Я попробовал то же самое с php56, и результат был тот же.

Как правильно установить composer на сервер CentOS 7 с несколькими версиями PHP?

Заметка: дайте знать, если это лучше для, скажем, superuser

Все зависит от версии PHP, которую вы хотите использовать.
Можете показать ошибку, которую вы получаете, пытаясь установить composer с php56?

Вообще, “php” — это просто символическая ссылка на настоящий бинарник PHP, который в вашем случае, похоже, указывает на php56. Чтобы убедиться, сделайте ls -l на символической ссылке, которую можно найти, набрав

whereis php

Если вы хотите, чтобы вся цепочка указывала на php72, замените символическую ссылку новой, которая будет указывать на бинарник php72.
Или, возможно, можно использовать алиас:

alias php="/path/to/php72"

Моё общее решение было таким:

  1. Создайте алиас в ~/.bashrc: alias php="php72"
  2. Затем установите composer по вышеуказанным шагам без изменений
  3. Потом вернитесь в ~/.bashrc, чтобы добавить новый алиас: alias composer_72="php /usr/local/bin/composer"

Теперь у меня composer работает на PHP7.2

.

Ответ или решение

Установка Composer на сервере CentOS с несколькими версиями PHP является важной задачей для управляемого использования зависимостей в проектах, особенно когда несколько версий PHP поддерживаются для различных приложений. В данной ситуации у вас на сервере установлены версии PHP 5.6 и 7.2. Для корректной установки Composer и его работы с определенной версией PHP, рекомендуется следовать оптимизированной процедуре.

Анализ Проблемы

Проблема изначально возникла из-за того, что php-файл composer.phar не был правильно привязан к исполняемому файлу PHP. Сценарий начальной установки через команду #!/usr/bin/env php не сработал, так как система не находила необходимую версию PHP среди установленных.

Решение Проблемы

  1. Проверка существующих версий PHP:
    Выполните команду whereis php, чтобы получить расположения всех доступных бинарников PHP. Определите, какая из версий по умолчанию используется в системе.

  2. Создание и использование алиасов:

    • Откройте файл ~/.bashrc и добавьте алиас для нужной версии PHP:
      alias php="php72"

      Этот алиас временно направит команды php на выполнение через php72, что позволит запустить Composer инсталлятор с необходимой версией PHP.

  3. Установка Composer:

    • Используйте следующие команды для установки Composer, сохраняя его настройки текущими:
      curl -sS https://getcomposer.org/installer | php
      mv composer.phar /usr/local/bin/composer
      chmod +x /usr/local/bin/composer

      Благодаря ранее созданному алиасу, эти команды будут выполняться с использованием PHP 7.2.

  4. Новый алиас для Composer:

    • Вернитесь в ~/.bashrc и добавьте новый алиас для Composer, который будет использовать конкретную версию PHP:
      alias composer_72="php /usr/local/bin/composer"

      Этот алиас позволит вам использовать Composer с PHP 7.2 без постоянного изменения системных связей.

Резюме

Это решение позволяет эффективно управлять несколькими версиями PHP на одной машине, и обеспечивает гибкость при работе с зависимостями, необходимыми для различных проектов. Следуя этим шагам, вы сможете воспользоваться Composer для установки и управления пакетами в PHP 7.2, не нарушая работу других приложений, использующих PHP 5.6.

Данная методика, учитывающая специфику многоверсионной PHP среды на CentOS, помогает избежать общих ошибок, связанных с неверной конфигурацией путей и алиасов, предоставляя мощный инструмент для управления зависимостями в PHP-проектах.

Оцените материал
Добавить комментарий

Капча загружается...