Як встановити PHP-пакети Composer без Composer?


97

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

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

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

Я думаю, що розробники Composer вважають, що вони допомагають людям, але насправді є тисячі розробників-початківців, котрі заблоковані в навчанні веб-розробкам за допомогою "бар'єра Composer".

Це справді допомогло б, якщо б існувало гнучке рішення чи якийсь підхід, де ми могли б встановити без Composer? Як я можу це зробити?

Будь ласка, не відповідайте якимось саркастичним коментарем . Є люди, які не хочуть використовувати Composer, і я не розумію, чому нас слід переводити в певне стороннє програмне забезпечення для веб-розробки.


6
Усі пакунки, що використовують композитор, все ще є лише каталогами, повними PHP-файлів. Ви можете встановити їх точно так само, як і до існування композитора: скопіюйте їх десь і includeфайли.
обдурити

2
Встановлення на основі композитора передбачає запуск однієї команди, яка майже завжди відображається на домашній сторінці пакета. Я розумію, що існують випадки використання для ручної установки, але це ніколи не буде простішим методом.
Альваро Гонсалес,

19
@ ÁlvaroGonzález Я не міг більше не погодитися з вашим коментарем. Будь ласка, дивіться: okmaya.com/2016/03/13/package-managers-hate-npm-composer . Я не кажу, що менеджери пакетів не підходять для деяких людей та проектів - просто вони часто вимагають більше праці та зусиль, ніж просто опускання папки у ваш проект та посилання на нього.
Даллін,

3
@dallin Незважаючи на заголовок, ця стаття в основному стосується сучасних надмірно спроектованих фреймворків та ланцюжків інструментів (сама по собі проблема). Якщо ви хочете встановити бібліотеку, яка має 30 залежностей, викидання Composer на користь 30 установок вручну може змусити вас почуватися більш мужньою чи якоюсь іншою, але я б не назвав це простішим і тим більше для початківців розробників.
Альваро Гонсалес

9
@ ÁlvaroGonzález Чесно кажучи, мені не доводилося встановлювати бібліотеку з 30 залежностями (звучить погано розроблений tbh). Я впевнений, що це був би кошмар без менеджера пакетів. Хоча мій досвід подібний до цієї статті. Зазвичай я намагаюся встановити щось із однією чи двома залежностями, і в кінцевому підсумку мені доводиться витрачати свій час на вирішення проблем із менеджером пакетів, перш ніж я навіть починаю кодувати. Повідомлення про помилки занадто часті, неймовірно розмиті та езотеричні. Це може краще проілюструвати мої почуття: imgur.com/r/webdev/bO7oTf6 . Мій досвід роботи з прем’єр-міністрами був подібним.
Даллін,

Відповіді:


38

У 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твердження. Ймовірно, вам знадобиться багато спроб і помилок, оскільки більшості авторів бібліотек це буде байдуже документувати це.

Крім того, і на всякий випадок, якщо з цього приводу є плутанина:

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

Composer не є досконалим, і він не підходить для всіх випадків використання, але, коли мова заходить про встановлення бібліотеки, яка на нього покладається, це, безсумнівно, найкраща альтернатива, і вона досить пристойна.


Я перевірив інші відповіді, які прийшли після мого. Вони в основному поділяються на дві категорії:

  1. Встановіть бібліотеку та напишіть із нею власний сценарій завантаження
  2. Використовуйте веб-інтерфейс для Composer

Якщо я чогось не пропускаю, жоден з них не розглядає скарги, висловлені ОП:

  • Крива навчання
  • Використання сторонніх програм
  • Можливість розробки прямо на сервері (я вважаю, що використовується SSH)
  • Дерево потенційно глибоких залежностей

23
Якщо це не переконає всіх просто використовувати композитора, ніщо не буде ...
обдурити

3
Перш за все поточній версії композитора потрібен proc_open (), який доступний не скрізь. А є й інші проблеми. Хоча я згоден, що композитор має свої достоїнства, я завжди знав, що одного разу зіткнусь із проблемою, і цього дня це було саме те. Я ще не з’ясував, як встановити спільну бібліотеку для 50+ клієнтських програм (за допомогою Composer).
karvonen

7
Я хотів би, щоб розробники бібліотек перестали використовувати композитор. Це заборонено в будь-якому серйозному виробничому середовищі. Люди, які ховаються за "просто користуйся композитором", не уявляють, що вони взагалі роблять.
IncredibleHat

108

Ви можете спробувати https://php-download.com/, який допоможе завантажувати всі залежності більшу частину часу разом із vendorпапкою. Це обіцяє, що композитор не потрібен. Спробував сам. Він знаходить і створює всі необхідні папки та стискає їх для завантаження. Працює ідеально !!


4
Працює чудово! Дякую !!
Yousphere

23
Це має бути прийнятою відповіддю. Він просто робить те, що робить композитор, а потім повертає zip

У ньому немає всіх бібліотек від github. Коли я намагаюся використовувати цей, наприклад: github.com/mgp25/Instagram-API, він каже, що не може його знайти.
Анді Хамоллі,

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а потім замінити каталог постачальника на вашому сервері на новий.


4

Мені довелося зробити це для FTP-сервера, до якого у мене не було доступу до SSH. Перерахований тут сайт працював, тоді я зрозумів, що ви можете просто встановити композитор на своєму власному сервері (використовуючи версію PHP своєї цілі), а потім скопіювати всі файли.


1
Це має бути відповіддю. У мене чудово працювало,
Майкл Уолтер

1
Чи можете ви пояснити свою відповідь краще? Вибачте за мою дурість.
Анді Хамоллі,

1
@IchHabsDrauf В основному він рекомендує використовувати композитор (у цій частині це насправді не відповідач), а потім копіювати файли у виробниче середовище. Мої коментарі до цього полягали б у тому, що, можливо, у середовищі розробників також є люди без композитора, тому це насправді не є заклиначем.
Gall Annonim

3

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

Дозволяє завантажувати файл composer.json так само, як це робив би композитор. Це дозволяє завантажувати файл composer.json без композитора (тому теоретично достатньо PHP 5.2)

Я знаю, що питання старе, але сподіваюся, воно комусь допоможе.


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");

Працював як шарм! Дякую за це :)
ajmeese7
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.