Как установить пакеты Composer PHP без Composer?

99

Я пытаюсь установить Coinbase PHP API, но для этого требуется Composer:

https://github.com/coinbase/coinbase-php

Я ищу универсальное PHP-решение (возможно, функцию), позволяющее мне устанавливать пакеты композитора прямо на мой сервер без использования Composer.

Я думаю, что разработчики Composer верят, что они помогают людям, но на самом деле есть тысячи начинающих разработчиков, которые не могут изучать веб-разработку из-за «барьера Composer».

Было бы действительно полезно, если бы было гибкое решение или какой-то подход, по которому мы могли бы установить без Composer? Как я могу это сделать?

Пожалуйста, не отвечайте саркастическим комментарием . Есть люди, которые не хотят использовать Composer, и я не понимаю, почему мы должны использовать какое-то стороннее программное обеспечение, чтобы заниматься веб-разработкой.

Эми Невилл
источник
6
Все пакеты, использующие composer, по-прежнему являются просто каталогами, заполненными файлами PHP. Вы можете установить их точно так же, как и до того, как появился композитор: скопируйте их куда-нибудь и includeфайлы.
deceze
2
Установка на основе Composer подразумевает выполнение одной команды, которая почти всегда отображается на домашней странице пакета. Я понимаю, что существуют варианты использования ручной установки, но это никогда не будет более простым методом.
Álvaro González
21
@ ÁlvaroGonzález Я не мог не согласиться с вашим комментарием. См. Страницу okmaya.com/2016/03/13/package-managers-hate-npm-composer . Я не говорю, что менеджеры пакетов плохо подходят для некоторых людей и проектов - просто они часто требуют больше работы и усилий, чем просто удаление папки в вашем проекте и обращение к ней.
dallin 08
3
@dallin Несмотря на название, эта статья в основном является разглагольствованием о современных чрезмерно сложных фреймворках и инструментальных цепочках (проблема сама по себе). Если вы хотите установить библиотеку, которая имеет 30 зависимостей, отказ от Composer в пользу 30 ручных установок может заставить вас почувствовать себя более мужественным или что-то еще, но я бы не назвал это проще, тем более для начинающих разработчиков.
Álvaro González
9
@ ÁlvaroGonzález Если честно, мне не приходилось устанавливать библиотеку с 30 зависимостями (звучит плохо спроектированный tbh). Я уверен, что без менеджера пакетов это был бы кошмар. Однако мой опыт похож на ту статью. Обычно я пытаюсь установить что-то с одной или двумя зависимостями, и в конечном итоге мне приходится тратить время на устранение проблем с диспетчером пакетов, прежде чем я даже начну кодировать. Сообщения об ошибках слишком частые, невероятно расплывчатые и эзотерические. Это могло бы лучше проиллюстрировать мои чувства: imgur.com/r/webdev/bO7oTf6 . Мой опыт работы с PM был аналогичным.
dallin 08

Ответы:

39

В composer.jsonфайле перечислены зависимости. В вашем примере:

"require": {
    "php": ">=5.5.0",
    "guzzlehttp/guzzle": "^6.0",
    "psr/http-message": "^1.0",
    "psr/log": "^1.0"
},

Затем вы должны найти соответствующие пакеты на сайте упаковщиков . Повторите тот же процесс для каждой зависимости: найдите дополнительные зависимости в соответствующих composer.jsonфайлах и выполните поиск снова.

Когда у вас, наконец, будет полный список необходимых пакетов, вам нужно будет установить их все один за другим. По большей части, это просто вопрос размещения файлов где-нибудь в каталоге вашего проекта. Но вы также должны убедиться, что PHP может найти необходимые классы. Поскольку вы не используете автозагрузчик Composer, вам необходимо добавить их в свой собственный автозагрузчик. Вы можете узнать информацию из соответствующих composer.jsonфайлов, например:

"autoload": {
    "psr-4": { "Coinbase\\Wallet\\": "src/" }
},

Если вы не используете автозагрузчик классов, вам нужно выяснить отдельные require_onceоператоры. Вероятно, вам понадобится много проб и ошибок, потому что большинство авторов библиотек не заботятся об этом.

Также, на всякий случай, в этом есть путаница:

  • Composer имеет официальный установщик с графическим интерфейсом для Windows и процедуру установки из командной строки для копирования и вставки для всех платформ.
  • Composer можно запускать локально, а его вывод просто выгружать в другое место. Вам не нужен SSH на вашем виртуальном хостинге.
  • Команду, необходимую для установки библиотеки, можно скопировать и вставить с веб-сайта пакета - даже если разработчик пакета не позаботился о ее документировании, packagist.org генерирует ее по умолчанию.

Composer не идеален и подходит не для всех случаев использования, но, когда дело доходит до установки библиотеки, которая полагается на него, это, несомненно, лучшая альтернатива и довольно приличная.


Я проверил другие ответы, которые пришли после моего. В основном они делятся на две категории:

  1. Установите библиотеку и напишите с ней собственный сценарий загрузки
  2. Используйте онлайн-интерфейс для Composer

Если я чего-то не упускаю, ни один из них не касается жалоб, выраженных OP:

  • Кривая обучения
  • Использование стороннего программного обеспечения
  • Возможность разработки прямо на сервере (полагаю, используя SSH)
  • Потенциально глубокое дерево зависимостей
Альваро Гонсалес
источник
25
Если это не убедит всех просто использовать композитор, ничто не будет…
deceze
3
Во-первых, текущая версия composer нуждается в proc_open (), который доступен не везде. Есть и другие проблемы. Хотя я согласен с тем, что у композитора есть свои достоинства, я всегда знал, что однажды столкнусь с проблемой, и именно сегодня. Мне еще предстоит выяснить, как установить общую библиотеку для более чем 50 клиентских приложений (с использованием Composer).
karvonen
8
Я хочу, чтобы разработчики библиотек перестали использовать композитор. Его нельзя использовать в любой серьезной производственной среде. Люди, которые прячутся за «просто используйте композитора», вообще не понимают, что они делают.
IncredibleHat
110

Вы можете попробовать https://php-download.com/, который поможет вам загружать все зависимости большую часть времени вместе с vendorпапкой. Это обещания композитора не требуются. Пробовал сам. Он находит и создает все необходимые папки и заархивирует их для загрузки. Прекрасно работает !!

jahajee.com
источник
4
Работает отлично! Спасибо !!
Yousphere
24
Это должен быть принятый ответ. Он просто делает то, что делает композитор, а затем возвращает zip-
В нем нет всех библиотек с github. Когда я пытаюсь использовать это, например: github.com/mgp25/Instagram-API, он говорит, что не может его найти.
Andi Hamolli
3
В приведенном выше ответе указано так много шагов, в то время как веб-сайт упрощает его до 1 загружаемого шага. Я не программист профессионально, но PHP позволяет мне делать безумные вещи так легко, что мне никогда не приходилось изучать SSH, композитор или пакет .... Они предназначены для вундеркиндов и профессионалов .... Веб-сайт снял это ограничение .. ... Я считаю, что все, кто проголосовал за мой ответ, считают, что веб-сайт делает это лучше, чем композитор ... Если вы можете это сделать ... Это поможет всем программистам, не являющимся компьютерными
фанатами
4
@ ÁlvaroGonzález. Лично меня не волнует, компилирует ли композитор проект на какой-то другой машине. У меня просто нет прав на установку на всех машинах, на которых я работаю, и иногда мне нужно получить библиотеку на машине с Windows без запуска exe-файла. Я ценю композитора, я просто не всегда могу его использовать, что было неприятно без предварительной компиляции этого сайта для меня.
Altimus Prime
9

Я использую общий хостинг для веб-сайта и не могу выполнять там команды. Помимо запуска композитора через запрос php-скрипта, который я запрашиваю через браузер, я обычно использую этот рабочий процесс:

  • Убедитесь, что у вас установлен php локально.
  • Сделайте каталог на рабочем столе.
  • загрузите composer.phar с https://getcomposer.org/download/ (под заголовком * Ручная загрузка ) и поместите его в каталог.
  • сделайте файл composer.json, вставьте в него следующее содержимое

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
  • Перейдите в каталог с оболочкой по вашему выбору (bash, git-bash, cmd, windows bash)

  • тип php composer.phar update скриншот вывода bash
  • Загрузите каталог поставщика на свой веб-сервер через ftp или другой механизм, который вы используете.
  • включить в свой проект php, в который вы загружаете свои библиотеки (измените путь туда, где вы загрузили каталог поставщика, чтобы он включал этот файл автозагрузки)

    require_once('vendor/autoload.php');

Таким образом, вы получаете преимущество управления зависимостями, и вам не нужно вручную включать все миллионы файлов и загружать все зависимости вручную, а обновить их так же просто, как ввести, php composer.phar updateа затем заменить каталог поставщика на вашем сервере на новый.

Tschallacka
источник
4

Мне пришлось сделать это для FTP-сервера, к которому у меня не было доступа по SSH. Сайт, указанный здесь, работал, затем я понял, что вы можете просто установить композитор на свой собственный сервер (используя версию PHP вашей целевой), а затем скопировать все файлы.

Адам Томпсон
источник
1
Это должен быть ответ. У меня отлично
Майкл Уолтер,
1
Не могли бы вы лучше объяснить свой ответ? Простите за мою глупость.
Andi Hamolli
1
@IchHabsDrauf В основном он хочет использовать композитор (в этой части это не совсем anwser), а затем копировать файлы в производственную среду. Я бы сказал, что, возможно, есть люди без композитора и в среде разработки, поэтому это не совсем anwser.
Галл Анноним
3

Это не окончательное решение, но для меня это было большим подспорьем в большинстве случаев: https://github.com/Wilkins/composer-file-loader

Позвольте вам загрузить файл composer.json так же, как это сделал бы композитор. Это позволяет загружать файл composer.json без композитора (теоретически достаточно PHP 5.2)

Я знаю, что вопрос старый, но надеюсь, что он кому-то поможет.

Helderk
источник
1

Альтернативное решение, которое сработало для меня (поскольку загрузка php была отключена), может быть реализовано путем создания собственного небольшого локального загрузчика композитора.

  1. Загрузите и установите XAMPP локально: https://www.apachefriends.org/index.html
  2. Загрузите и установите композитор локально: https://getcomposer.org/download/
  3. Откройте командную строку, перейдите к словам c:\tempи и просто введите зависимость композитора, например:composer require league/oauth2-client
  4. Скопируйте файлы из c:\tempпапки на свой веб-хостинг с помощью программы FTP.
  5. Добавьте это в начало вашего php: require("vendor/autoload.php");
jsmars
источник
Работал как шарм! Спасибо за это :)
Аарон Миз