Comment installer les packages PHP Composer sans Composer?

97

J'essaie d'installer l'API PHP Coinbase mais cela nécessite Composer:

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

Je recherche une solution PHP universelle (peut-être une fonction) pour me permettre d'installer des packages de compositeur directement sur mon serveur, sans avoir à utiliser Composer.

Je pense que les développeurs de Composer pensent qu'ils aident les gens, mais en fait, il y a des milliers de développeurs débutants qui sont exclus de l'apprentissage du développement Web par la «barrière du compositeur».

Cela aiderait vraiment s'il y avait une solution flexible ou une approche où nous pourrions installer sans Composer? Comment puis-je faire ceci?

Veuillez ne pas répondre avec un commentaire sarcastique . Il y a des gens qui ne veulent pas utiliser Composer et je ne vois pas pourquoi nous devrions être regroupés dans un logiciel tiers spécifique pour faire du développement Web.

Amy Neville
la source
6
Tous les paquets utilisant composer sont encore de simples répertoires remplis de fichiers PHP. Vous pouvez les installer exactement de la même manière que vous le faisiez avant que composer existe: copiez-les quelque part et includeles fichiers.
deceze
2
L'installation basée sur Composer implique l'exécution d'une seule commande, qui est presque toujours affichée sur la page d'accueil du package. Je comprends qu'il existe des cas d'utilisation pour une installation manuelle, mais ce ne sera jamais la méthode la plus simple.
Álvaro González
19
@ ÁlvaroGonzález Je ne pourrais pas être plus en désaccord avec votre commentaire. Veuillez consulter: okmaya.com/2016/03/13/package-managers-hate-npm-composer . Je ne dis pas que les gestionnaires de packages ne sont pas parfaits pour certaines personnes et certains projets - simplement qu'ils nécessitent souvent plus de travail et d'efforts que de simplement déposer un dossier dans votre projet et de le référencer.
dallin
3
@dallin Malgré le titre, cet article est principalement une diatribe sur les frameworks et les chaînes d'outils modernes sur-conçus (un problème en soi). Si vous voulez installer une bibliothèque qui a 30 dépendances, vider Composer en faveur de 30 installations manuelles peut vous faire vous sentir plus viril ou autre, mais je n'appellerais pas cela plus facile, encore moins pour les développeurs débutants.
Álvaro González
9
@ ÁlvaroGonzález Pour être honnête, je n'ai pas eu à installer une bibliothèque avec 30 dépendances (ça sonne mal conçu tbh). Je suis sûr que ce serait un cauchemar sans gestionnaire de paquets. Mes expériences sont cependant similaires à cet article. J'essaie généralement d'installer quelque chose avec une ou deux dépendances et je finis par devoir passer mon temps à résoudre les problèmes avec le gestionnaire de paquets avant même de commencer à coder. Les messages d'erreur sont beaucoup trop fréquents et incroyablement vagues et ésotériques. Cela pourrait mieux illustrer mes sentiments: imgur.com/r/webdev/bO7oTf6 . Mes expériences avec les PM ont été similaires.
dallin

Réponses:

38

Le composer.jsonfichier répertorie les dépendances. Dans votre exemple:

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

Vous devez ensuite trouver les packages correspondants sur le site de packagist . Répétez le même processus pour chaque dépendance: recherchez des dépendances supplémentaires dans leurs composer.jsonfichiers correspondants et effectuez une nouvelle recherche.

Lorsque vous avez enfin une liste complète des packages requis, il vous suffit de les installer tous un par un. Pour la plupart, il s'agit simplement de déposer les fichiers quelque part dans le répertoire de votre projet. Mais vous devez également vous assurer que PHP peut trouver les classes nécessaires. Puisque vous n'utilisez pas le chargeur automatique de Compositeur, vous devez les ajouter à votre propre chargeur automatique personnalisé. Vous pouvez trouver les informations des composer.jsonfichiers respectifs , par exemple:

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

Si vous n'utilisez pas de chargeur automatique de classe, vous devrez comprendre les require_onceinstructions individuelles . Vous aurez probablement besoin de beaucoup d'essais et d'erreurs car la plupart des auteurs de bibliothèques ne se soucieront pas de documenter cela.

Aussi, et juste au cas où il y aurait confusion à ce sujet:

  • Composer dispose d'un programme d'installation GUI officiel pour Windows et d'une procédure d'installation de ligne de commande copier-coller pour toutes les plates-formes.
  • Composer peut être exécuté localement et sa sortie vient d'être téléchargée ailleurs. Vous n'avez pas besoin de SSH dans votre hébergement partagé.
  • La commande nécessaire pour installer une bibliothèque peut être copiée et collée à partir du site Web du package - même si le responsable du package ne se souciait pas de la documenter, packagist.org la génère par défaut.

Composer n'est pas parfait et ne convient pas à tous les cas d'utilisation, mais lorsqu'il s'agit d'installer une bibliothèque qui en dépend, c'est sans aucun doute la meilleure alternative et c'est une assez bonne alternative.


J'ai vérifié d'autres réponses après la mienne. Ils appartiennent principalement à deux catégories:

  1. Installez une bibliothèque et écrivez un script de téléchargement personnalisé avec
  2. Utiliser une interface Web en ligne pour Composer

Sauf si je manque quelque chose, aucun d'entre eux ne répond aux plaintes exprimées par le PO:

  • Courbe d'apprentissage
  • Utilisation de logiciels tiers
  • Possibilité de développer directement sur le serveur (en utilisant SSH, je présume)
  • Arbre de dépendance potentiellement profond
Álvaro González
la source
23
Si cela ne convainc pas tout le monde d'utiliser simplement le compositeur, rien ne ...
deceze
3
Tout d'abord, la version actuelle de composer a besoin de proc_open () qui n'est pas disponible partout. Et il y a aussi d'autres problèmes. Bien que je sois d'accord pour dire que le compositeur a ses mérites, j'ai toujours su que je rencontrerais un problème un jour et ce jour-là l'était. Je n'ai pas encore compris comment installer une bibliothèque partagée pour plus de 50 applications clientes (en utilisant Composer).
karvonen
7
Je souhaite que les développeurs de bibliothèques arrêtent d'utiliser composer. C'est un incontournable dans tout environnement de production sérieux. Les gens qui se cachent derrière «juste utiliser le compositeur» n'ont aucune idée de ce qu'ils font en premier lieu.
IncredibleHat
108

Vous pouvez essayer https://php-download.com/ qui peut vous aider à télécharger toutes les dépendances la plupart du temps avec le vendordossier. Il promet que le compositeur n'est pas requis. Je l'ai essayé moi-même. Il trouve et crée tous les dossiers requis et le zippe pour le téléchargement. Fonctionne parfaitement !!

jahajee.com
la source
4
Fonctionne parfaitement! Merci !!
Yousphere
23
Cela devrait être la réponse acceptée. Il fait juste ce que fait le compositeur, puis renvoie un zip
Il n'a pas toutes les bibliothèques de github. Lorsque j'essaie d'utiliser celui-ci par exemple: github.com/mgp25/Instagram-API, il dit qu'il ne peut pas le trouver.
Andi Hamolli
3
La réponse ci-dessus indique de nombreuses étapes à faire pendant que le site Web le simplifie à 1 étapes téléchargeables. Je ne suis pas un programmeur professionnel mais PHP me permet de faire des choses insensées si facilement que je n'ai jamais eu besoin d'apprendre SSH ou compositeur ou package .... Celles-ci sont destinées aux geeks et aux professionnels .... Le site Web a supprimé cette limitation .. ... Je crois que tous ceux qui ont voté pour ma réponse trouvent que le site Web le fait mieux que le compositeur ..... Si vous pouvez le faire ... Cela aidera tous les programmeurs non geek
jahajee.com
4
@ ÁlvaroGonzález. Personnellement, je me fiche que le compositeur compile un projet sur une autre machine. Je n'ai tout simplement pas de privilèges d'installation sur toutes les machines sur lesquelles je travaille, et parfois j'ai besoin d'obtenir une bibliothèque sur une machine Windows sans exécuter un fichier exe. J'apprécie le compositeur, je ne peux pas toujours l'utiliser, ce qui était frustrant sans ce site à précompiler pour moi.
Altimus Prime
9

J'utilise l'hébergement mutualisé pour un site Web et je ne peux pas y exécuter de commandes. En plus d'exécuter composer via une requête de script php que je demande via un navigateur, j'utilise généralement ce flux de travail:

  • Assurez-vous que php est installé localement.
  • Créez un répertoire sur le bureau.
  • téléchargez composer.phar depuis https://getcomposer.org/download/ (sous l'en-tête * Téléchargement manuel ) et placez-le dans le répertoire.
  • créer un fichier composer.json y coller le contenu suivant

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
  • Naviguez jusqu'au répertoire avec le shell de votre choix (bash, git-bash, cmd, windows bash)

  • type php composer.phar update capture d'écran de la sortie bash
  • Téléchargez le répertoire des fournisseurs sur votre serveur Web via ftp ou tout autre mécanisme que vous utilisez.
  • inclure dans votre projet php où vous chargez vos bibliothèques (modifiez le chemin vers l'endroit où vous avez téléchargé le répertoire du fournisseur afin qu'il inclue ce fichier de chargement automatique)

    require_once('vendor/autoload.php');

De cette façon, vous bénéficiez de la gestion des dépendances et vous n'avez pas besoin d'inclure manuellement tous les millions de fichiers et de télécharger toutes les dépendances manuellement, et les mettre à jour est tout aussi simple que de taper php composer.phar updatepuis de remplacer le répertoire fournisseur sur votre serveur par le nouveau.

Tschallacka
la source
4

J'ai dû faire cela pour un serveur FTP auquel je n'avais pas accès SSH. Le site répertorié ici a fonctionné, puis j'ai réalisé que vous pouviez simplement faire une installation de compositeur sur votre propre serveur (en utilisant la version PHP de votre cible), puis copier tous les fichiers.

Adam Thompson
la source
1
Cela devrait être la réponse. A parfaitement fonctionné pour moi,
Michael Walter
1
Pouvez-vous expliquer mieux votre réponse? Désolé pour ma stupidité.
Andi Hamolli
1
@IchHabsDrauf Fondamentalement, il a utilisé composer (à ce stade, ce n'est pas vraiment la réponse) et que de copier les fichiers dans l'environnement de production. Mon commentaire à ce sujet serait qu'il y a peut-être des gens sans compositeur sur l'environnement de développement aussi, donc ce n'est pas vraiment une réponse.
Gall Annonim
3

Ce n'est pas la solution ultime mais pour moi, cela a été d'une grande aide pour la plupart des cas: https://github.com/Wilkins/composer-file-loader

Vous permet de charger le fichier composer.json comme le ferait composer. Cela vous permet de charger le fichier composer.json sans composer (donc théoriquement PHP 5.2 suffit)

Je sais que la question est ancienne, mais j'espère qu'elle aidera quelqu'un.

Helderk
la source
1

Une solution alternative qui a fonctionné pour moi (puisque php-download était en panne) peut être faite en créant votre propre petit téléchargeur de compositeur local.

  1. Téléchargez et installez XAMPP localement: https://www.apachefriends.org/index.html
  2. Téléchargez et installez le compositeur localement: https://getcomposer.org/download/
  3. Ouvrez l'invite de commande, accédez à dire c:\tempet tapez simplement la dépendance du composeur, par exemple:composer require league/oauth2-client
  4. Copiez les fichiers de votre c:\tempdossier sur votre hébergeur à l'aide d'un programme FTP
  5. Ajoutez ceci en haut de votre php: require("vendor/autoload.php");
jsmars
la source
A travaillé comme un charme! Merci pour ça :)
ajmeese7