Wie installiere ich Composer PHP-Pakete ohne Composer?

96

Ich versuche, die Coinbase PHP-API zu installieren, aber dafür ist Composer erforderlich:

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

Ich suche nach einer universellen PHP-Lösung (möglicherweise einer Funktion), mit der ich Composer-Pakete direkt auf meinem Server installieren kann, ohne Composer verwenden zu müssen.

Ich denke, die Entwickler von Composer glauben, dass sie Menschen helfen, aber tatsächlich gibt es Tausende von Anfängerentwicklern, die durch die "Composer-Barriere" daran gehindert werden, Webentwicklung zu lernen.

Es wäre wirklich hilfreich, wenn es eine flexible Lösung oder einen Ansatz gäbe, bei dem wir ohne Composer installieren könnten. Wie kann ich das machen?

Bitte antworten Sie nicht mit einem sarkastischen Kommentar . Es gibt Leute, die Composer nicht verwenden möchten, und ich verstehe nicht, warum wir für die Webentwicklung in eine bestimmte Software von Drittanbietern getrieben werden sollten.

Amy Neville
quelle
6
Alle Pakete, die Composer verwenden, sind immer noch reine Verzeichnisse voller PHP-Dateien. Sie können sie genauso installieren, wie Sie es vor dem Komponisten getan haben: Kopieren Sie sie irgendwohin und includedie Dateien.
Täuschung
2
Bei der Installation auf Composer-Basis muss ein einzelner Befehl ausgeführt werden, der fast immer auf der Pakethomepage angezeigt wird. Ich verstehe, dass es Anwendungsfälle für die manuelle Installation gibt, aber es wird nie die einfachere Methode sein.
Álvaro González
19
@ ÁlvaroGonzález Ich konnte Ihrem Kommentar nicht mehr widersprechen. Bitte sehen Sie: okmaya.com/2016/03/13/package-managers-hate-npm-composer . Ich sage nicht, dass Paketmanager für manche Leute und Projekte nicht besonders gut sind - nur, dass sie oft mehr Arbeit und Mühe erfordern, als einfach einen Ordner in Ihrem Projekt abzulegen und darauf zu verweisen.
Dallas
3
@dallin Trotz des Titels handelt es sich bei diesem Artikel hauptsächlich um moderne überentwickelte Frameworks und Toolketten (ein eigenes Problem). Wenn Sie eine Bibliothek installieren möchten, die zufällig 30 Abhängigkeiten aufweist, können Sie sich durch das Dumping von Composer zugunsten von 30 manuellen Installationen männlicher fühlen oder was auch immer, aber ich würde es nicht einfacher nennen, geschweige denn für Anfänger.
Álvaro González
9
@ ÁlvaroGonzález Um ehrlich zu sein, musste ich keine Bibliothek mit 30 Abhängigkeiten installieren (klingt schlecht, tbh). Ich bin sicher, es wäre ein Albtraum ohne einen Paketmanager. Meine Erfahrungen ähneln jedoch diesem Artikel. Normalerweise versuche ich, etwas mit ein oder zwei Abhängigkeiten zu installieren, und muss am Ende meine Zeit damit verbringen, die Probleme mit dem Paketmanager zu beheben, bevor ich überhaupt mit dem Codieren beginne. Fehlermeldungen sind viel zu häufig und unglaublich vage und esoterisch. Dies könnte meine Gefühle besser veranschaulichen: imgur.com/r/webdev/bO7oTf6 . Meine Erfahrungen mit PMs waren ähnlich.
Dallas

Antworten:

38

Die composer.jsonDatei listet die Abhängigkeiten auf. In Ihrem Beispiel:

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

Sie müssen dann die entsprechenden Pakete auf der Packagist- Site finden. Wiederholen Sie den gleichen Vorgang für jede Abhängigkeit: Suchen Sie zusätzliche Abhängigkeiten in den entsprechenden composer.jsonDateien und suchen Sie erneut.

Wenn Sie endlich eine vollständige Liste der erforderlichen Pakete haben, müssen Sie sie nur noch einzeln installieren. Zum größten Teil geht es nur darum, die Dateien irgendwo in Ihrem Projektverzeichnis abzulegen. Sie müssen aber auch sicherstellen, dass PHP die benötigten Klassen finden kann. Da Sie den Auto-Loader von Composer nicht verwenden, müssen Sie ihn Ihrem eigenen benutzerdefinierten Autoloader hinzufügen. Sie können die Informationen aus den jeweiligen composer.jsonDateien herausfinden , z.

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

Wenn Sie keinen Klassen-Auto-Loader verwenden, müssen Sie die einzelnen require_onceAnweisungen herausfinden . Sie werden wahrscheinlich viel Versuch und Irrtum brauchen, da es den meisten Autoren der Bibliothek egal ist, dies zu dokumentieren.

Auch und nur für den Fall, dass diesbezüglich Verwirrung herrscht:

  • Composer verfügt über ein offizielles GUI-Installationsprogramm für Windows und ein Befehlszeileninstallationsverfahren zum Kopieren und Einfügen für alle Plattformen.
  • Composer kann lokal ausgeführt und seine Ausgabe einfach an eine andere Stelle hochgeladen werden. Sie benötigen kein SSH für Ihr Shared Hosting.
  • Der zum Installieren einer Bibliothek erforderliche Befehl kann von der Paketwebsite kopiert und eingefügt werden. Auch wenn der Paketbetreuer ihn nicht dokumentieren wollte, generiert packagist.org ihn standardmäßig.

Composer ist nicht perfekt und nicht für alle Anwendungsfälle geeignet. Wenn es jedoch darum geht, eine Bibliothek zu installieren, die darauf basiert, ist es zweifellos die beste Alternative und eine recht anständige.


Ich habe andere Antworten überprüft, die nach meinen kamen. Sie fallen meist in zwei Kategorien:

  1. Installieren Sie eine Bibliothek und schreiben Sie damit ein benutzerdefiniertes Download-Skript
  2. Verwenden Sie eine webbasierte Online-Oberfläche für Composer

Sofern mir nichts fehlt, geht keiner von ihnen auf die vom OP geäußerten Beschwerden ein:

  • Lernkurve
  • Verwendung von Software von Drittanbietern
  • Möglichkeit, direkt auf dem Server zu entwickeln (mit SSH, nehme ich an)
  • Potenziell tiefer Abhängigkeitsbaum
Álvaro González
quelle
23
Wenn dies nicht alle davon überzeugt, nur Komponisten zu verwenden, wird nichts…
täuschen
3
Zunächst benötigt die aktuelle Version von Composer proc_open (), das nicht überall verfügbar ist. Und es gibt noch andere Probleme. Obwohl ich der Meinung bin, dass der Komponist seine Vorzüge hat, habe ich immer gewusst, dass ich eines Tages auf ein Problem stoßen würde, und dieser Tag war es. Ich muss noch herausfinden, wie eine gemeinsam genutzte Bibliothek für mehr als 50 Clientanwendungen (mit Composer) installiert wird.
Karvonen
7
Ich wünschte, Bibliotheksentwickler würden den Komponisten nicht mehr verwenden. Es ist ein No-Go in jeder ernsthaften Produktionsumgebung. Menschen, die sich hinter "nur Komponisten benutzen" verstecken, haben keine Ahnung, was sie überhaupt tun.
IncredibleHat
107

Sie können https://php-download.com/ ausprobieren, um die meiste Zeit die Abhängigkeit zusammen mit dem vendorOrdner herunterzuladen . Es verspricht Komponist nicht erforderlich. Versuchte es selbst. Es findet und erstellt alle erforderlichen Ordner und komprimiert sie zum Download. Funktioniert perfekt !!

jahajee.com
quelle
4
Perfekt funktionieren! Vielen Dank !!
Yousphere
23
Dies sollte die akzeptierte Antwort sein. Es macht einfach das, was der Komponist macht und gibt dann eine Zip zurück
Es sind nicht alle Bibliotheken von Github vorhanden. Wenn ich versuche, dieses zu verwenden, zum Beispiel: github.com/mgp25/Instagram-API , heißt es, dass es nicht gefunden werden kann.
Andi Hamolli
3
Die obige Antwort sagt so viele Schritte aus, während die Website es auf 1 herunterladbare Schritte vereinfacht. Ich bin kein professioneller Programmierer, aber PHP ermöglicht es mir, verrückte Dinge so einfach zu machen, dass ich nie SSH oder Komponisten oder Pakete lernen musste. Diese sind für Geeks und Profis gedacht. Die Website hat diese Einschränkung aufgehoben. ... Ich glaube, alle, die meine Antwort positiv bewertet haben, finden, dass die Website es besser macht als Komponisten ..... Wenn Sie das können .... Es wird allen Nicht-Geek-Programmierern helfen
jahajee.com
4
@ ÁlvaroGonzález. Persönlich ist es mir egal, ob der Komponist ein Projekt auf einer anderen Maschine kompiliert. Ich habe einfach keine Installationsrechte auf allen Computern, auf denen ich arbeite, und manchmal muss ich eine Bibliothek auf einem Windows-Computer abrufen, ohne eine exe-Datei auszuführen. Ich schätze Komponisten, ich kann sie einfach nicht immer verwenden, was frustrierend war, ohne dass diese Seite für mich vorkompiliert wurde.
Altimus Prime
8

Ich verwende Shared Hosting für eine Website und kann dort keine Befehle ausführen. Abgesehen davon, dass Composer über eine PHP-Skriptanforderung ausgeführt wird, die ich über einen Browser anfordere, verwende ich normalerweise diesen Workflow:

  • Stellen Sie sicher, dass Sie PHP lokal installiert haben.
  • Verzeichnis auf dem Desktop erstellen.
  • Laden Sie composer.phar von https://getcomposer.org/download/ herunter (unter der Überschrift * Manueller Download ) und legen Sie es im Verzeichnis ab.
  • Erstellen Sie in einer Datei composer.json den folgenden Inhalt

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
  • Navigieren Sie zu dem Verzeichnis mit der Shell Ihrer Wahl (Bash, Git-Bash, Cmd, Windows Bash).

  • Art php composer.phar update Screenshot der Bash-Ausgabe
  • Laden Sie das Herstellerverzeichnis über FTP oder einen anderen von Ihnen verwendeten Mechaniker auf Ihren Webserver hoch.
  • in dein PHP-Projekt aufnehmen, in das du deine Bibliotheken lädst (ändere den Pfad dahin, wo du das Herstellerverzeichnis hochgeladen hast, damit es diese Autoload-Datei enthält)

    require_once('vendor/autoload.php');

Auf diese Weise profitieren Sie vom Abhängigkeitsmanagement und müssen nicht alle Unmengen von Dateien manuell einschließen und alle Abhängigkeiten manuell herunterladen. Das Aktualisieren ist genauso einfach wie das Eingeben php composer.phar updateund anschließende Ersetzen des Herstellerverzeichnisses auf Ihrem Server durch das ein neues.

Tschallacka
quelle
4

Ich musste dies für einen FTP-Server tun, auf den ich keinen SSH-Zugriff hatte. Die hier aufgeführte Site hat funktioniert. Dann wurde mir klar, dass Sie einfach eine Composer-Installation auf Ihrem eigenen Server durchführen können (unter Verwendung der PHP-Version Ihres Ziels) und dann alle Dateien kopieren können.

Adam Thompson
quelle
1
Das sollte die Antwort sein. Arbeitete perfekt für mich,
Michael Walter
1
Können Sie bitte Ihre Antwort besser erklären? Entschuldigung für meine Dummheit.
Andi Hamolli
1
@IchHabsDrauf Grundsätzlich empfiehlt er, den Komponisten zu verwenden (in diesem Teil ist es nicht wirklich die Antwort) und dann Dateien in die Produktionsumgebung zu kopieren. Mein Kommentar dazu wäre, dass es vielleicht auch Leute ohne Komponisten in der Entwicklungsumgebung gibt, also ist dies nicht wirklich eine Antwort.
Gall Annonim
3

Dies ist nicht die ultimative Lösung, aber für mich war es in den meisten Fällen eine große Hilfe: https://github.com/Wilkins/composer-file-loader

Ermöglichen Sie das Laden der Datei composer.json genau so, wie es der Komponist tun würde. Auf diese Weise können Sie die Datei composer.json ohne Composer laden (theoretisch ist PHP 5.2 ausreichend).

Ich weiß, dass die Frage alt ist, aber ich hoffe, sie wird jemandem helfen.

Helderk
quelle
1

Eine alternative Lösung, die für mich funktioniert hat (da der PHP-Download nicht funktioniert hat), kann durch Erstellen eines eigenen kleinen lokalen Composer-Downloaders erfolgen.

  1. Laden Sie XAMPP lokal herunter und installieren Sie es: https://www.apachefriends.org/index.html
  2. Laden Sie den Composer lokal herunter und installieren Sie ihn: https://getcomposer.org/download/
  3. Öffnen Sie die Eingabeaufforderung, navigieren Sie zu sagen c:\tempund geben Sie einfach die Composer-Abhängigkeit ein, zum Beispiel:composer require league/oauth2-client
  4. Kopieren Sie die Dateien c:\tempmit einem FTP-Programm aus Ihrem Ordner auf Ihren Webhost
  5. Fügen Sie dies oben in Ihrem PHP hinzu: require("vendor/autoload.php");
jsmars
quelle
Lief wie am Schnürchen! Danke dafür :)
ajmeese7