169 votes

Comment installer les paquets PHP de Composer sans Composer ?

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

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

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

Je pense que les développeurs de Composer croient qu'ils aident les gens, mais en réalité, des milliers de développeurs débutants sont empêchés d'apprendre le développement web par la "barrière Composer".

Cela aiderait vraiment s'il existait une solution flexible ou une approche permettant d'installer sans Composer ? Comment faire ?

S'il vous plaît, ne répondez pas par un commentaire sarcastique. . Il y a des gens qui ne veulent pas utiliser Composer et je ne vois pas pourquoi on devrait nous imposer un logiciel tiers spécifique pour faire du développement web.

14 votes

Tous les paquets utilisant Composer sont toujours de simples répertoires remplis de fichiers PHP. Vous pouvez les installer exactement de la même manière qu'avant l'existence de composer : copiez-les quelque part et include les fichiers.

2 votes

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 paquet. Je comprends qu'il existe des cas d'utilisation pour l'installation manuelle, mais ce ne sera jamais la méthode la plus simple.

26 votes

@Á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 paquets ne sont pas excellents pour certaines personnes et certains projets, mais qu'ils demandent souvent plus de travail et d'efforts que de simplement déposer un dossier dans votre projet et de le référencer.

131voto

jahajee.com Points 2055

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

5 votes

Fonctionne parfaitement ! Merci ! !

31 votes

Cela devrait être la réponse acceptée. Il fait simplement ce que fait le compositeur et renvoie un zip.

0 votes

Il ne dispose pas de toutes les bibliothèques de Github. Quand j'essaie d'utiliser celle-ci par exemple : github.com/mgp25/Instagram-API il dit qu'il ne peut pas le trouver.

55voto

Álvaro G. Vicario Points 57607

El composer.json fichier liste 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 paquets correspondants dans le emballeur site. Répétez le même processus pour chaque dépendance : trouvez des dépendances supplémentaires dans leurs sites correspondants. composer.json et cherchez à nouveau.

Lorsque vous avez enfin la liste complète des paquets requis, il ne vous reste plus qu'à les installer un par un. Dans la plupart des cas, il suffit 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. Comme vous n'utilisez pas le chargeur automatique de Composer, vous devez les ajouter à votre propre chargeur automatique. Vous pouvez trouver l'information dans les fichiers composer.json des fichiers, par exemple :

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

Si vous n'utilisez pas d'auto-chargeur de classe, vous devrez déterminer les paramètres individuels de l'auto-chargeur. require_once déclarations. Vous aurez probablement besoin de beaucoup d'essais et d'erreurs car la plupart des auteurs de bibliothèques ne se soucient pas de documenter cela.

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

  • Composer dispose d'un programme d'installation graphique officiel pour Windows et d'un programme d'installation pour l'Europe. copier et coller procédure d'installation en ligne de commande pour toutes les plateformes.
  • Composer peut être exécuté localement et sa sortie peut être téléchargée ailleurs. Vous n'avez pas besoin de SSH dans votre hébergement mutualisé.
  • La commande nécessaire à l'installation d'une bibliothèque peut être copiée et collée depuis le site Web du paquet - même si le responsable du paquet n'a pas pris soin de la documenter, packagist.org la génère par défaut.

Composer n'est pas parfait et ne convient pas à tous les cas de figure mais, lorsqu'il s'agit d'installer une bibliothèque qui repose sur lui, c'est sans aucun doute la meilleure alternative et elle est assez décente.


J'ai vérifié les autres réponses qui sont venues après la mienne. Elles se répartissent principalement en deux catégories :

  1. Installer une bibliothèque et écrire un script de téléchargement personnalisé avec elle.
  2. Utiliser une interface en ligne basée sur le web pour Composer

Sauf erreur de ma part, 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

41 votes

Si cela ne convainc pas tout le monde d'utiliser Composer, rien ne le fera

3 votes

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 reconnaisse les mérites de Composer, j'ai toujours su que je rencontrerais un jour un problème, et ce jour est arrivé. Je n'ai pas encore trouvé comment installer une bibliothèque partagée pour plus de 50 applications clientes (en utilisant Composer).

31 votes

J'aimerais que les développeurs de bibliothèques cessent d'utiliser Composer. C'est un obstacle dans tout environnement de production sérieux. Les gens qui se cachent derrière le slogan "utilisez simplement Composer" n'ont aucune idée de ce qu'ils font.

25voto

Michael Dibbets Points 2844

J'utilise un hébergement partagé pour un site web et je ne peux pas y exécuter de commandes. En dehors de l'exécution du compositeur via la requête php script que je demande via le navigateur, j'utilise généralement ce flux de travail :

  • Assurez-vous que vous avez installé php localement.

  • Créez un répertoire sur le bureau.

  • télécharger composer.phar à partir de https://getcomposer.org/download/ (sous l'en-tête *Téléchargement manuel ) et le placer dans le répertoire.

  • créer un fichier compositeur.json y coller le contenu suivant

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
  • Naviguez vers le répertoire avec le shell de votre choix (bash, git-bash, cmd, Windows bash).

  • type php composer.phar update screenshot of bash output

  • Téléchargez le répertoire du fournisseur 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 vendeur afin d'inclure ce fichier autoload)

    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 milliards de fichiers et de télécharger toutes les dépendances manuellement, et les mettre à jour est aussi simple que de taper php composer.phar update puis de remplacer le répertoire du fournisseur sur votre serveur par le nouveau.

5voto

helderk Points 140

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

Permet de charger le fichier composer.json comme le ferait le compositeur. Ceci vous permet de charger le fichier composer.json sans composer (donc théoriquement PHP 5.2 est suffisant)

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

4voto

Adam Thompson Points 101

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

1 votes

Cela devrait être la réponse. Ça a parfaitement fonctionné pour moi,

1 votes

Pouvez-vous mieux expliquer votre réponse ? Désolé pour ma stupidité.

1 votes

@IchHabsDrauf En fait, il voulait dire qu'il fallait utiliser composer (à ce stade, ce n'est pas vraiment la solution) et ensuite copier les fichiers dans l'environnement de production. Mon commentaire à ce sujet serait qu'il y a peut-être des gens qui n'utilisent pas Composer dans l'environnement de développement aussi, donc ce n'est pas vraiment une réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X