Come installo i pacchetti PHP di Composer senza Composer?


97

Sto cercando di installare l'API PHP di Coinbase ma richiede Composer:

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

Sto cercando una soluzione PHP universale (forse una funzione) che mi consenta di installare i pacchetti del compositore direttamente sul mio server, senza dover usare Composer.

Penso che gli sviluppatori di Composer credano di aiutare le persone, ma in realtà ci sono migliaia di sviluppatori principianti che sono stati esclusi dall'apprendimento dello sviluppo web dalla "barriera Composer".

Sarebbe davvero utile se esistesse una soluzione flessibile o un approccio in cui potessimo installare senza Composer? Come posso fare questo?

Per favore, non rispondere con qualche commento sarcastico . Ci sono persone che non vogliono usare Composer e non vedo perché dovremmo essere raggruppati in uno specifico software di terze parti per fare sviluppo web.


6
Tutti i pacchetti che usano composer sono ancora semplici directory piene di file PHP. Puoi installarli esattamente come facevi prima che esistesse il compositore: copiarli da qualche parte e includei file.
inganna

2
L'installazione basata su Composer implica l'esecuzione di un singolo comando, che è quasi sempre mostrato nella home page del pacchetto. Capisco che ci siano casi d'uso per l'installazione manuale, ma non sarà mai il metodo più semplice.
Álvaro González

19
@ ÁlvaroGonzález Non potrei essere più in disaccordo con il tuo commento. Vedere: okmaya.com/2016/03/13/package-managers-hate-npm-composer . Non sto dicendo che i gestori di pacchetti non siano eccezionali per alcune persone e progetti, solo che spesso richiedono più lavoro e impegno rispetto al semplice rilascio di una cartella nel progetto e al relativo riferimento.
dallin

3
@dallin Nonostante il titolo, quell'articolo è perlopiù uno sproloquio sui moderni framework e catene di strumenti (un problema a sé stante). Se vuoi installare una libreria che ha 30 dipendenze, scaricare Composer a favore di 30 installazioni manuali può farti sentire più virile o qualsiasi altra cosa, ma non lo chiamerei più facile, tanto meno per gli sviluppatori principianti.
Álvaro González

9
@ ÁlvaroGonzález Ad essere onesti, non ho dovuto installare una libreria con 30 dipendenze (sembra mal progettato tbh). Sono sicuro che sarebbe un incubo senza un gestore di pacchetti. Le mie esperienze però sono simili a quell'articolo. Di solito provo a installare qualcosa con una o due dipendenze e finisco per dover passare il mio tempo a risolvere i problemi con il gestore di pacchetti prima ancora di iniziare a scrivere codice. I messaggi di errore sono troppo frequenti e incredibilmente vaghi ed esoterici. Questo potrebbe illustrare meglio i miei sentimenti: imgur.com/r/webdev/bO7oTf6 . Le mie esperienze con i PM sono state simili.
dallin

Risposte:


38

Il composer.jsonfile elenca le dipendenze. Nel tuo esempio:

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

È quindi necessario trovare i pacchetti corrispondenti nel sito del packagist . Ripeti la stessa procedura per ogni dipendenza: trova ulteriori dipendenze nei composer.jsonfile corrispondenti e cerca di nuovo.

Quando finalmente hai un elenco completo dei pacchetti richiesti, devi solo installarli tutti uno per uno. Per la maggior parte, è solo questione di far cadere i file da qualche parte nella directory del progetto. Ma devi anche assicurarti che PHP possa trovare le classi necessarie. Poiché non stai utilizzando il caricatore automatico di Composer, devi aggiungerli al tuo caricatore automatico personalizzato. Puoi ricavare le informazioni dai rispettivi composer.jsonfile, ad esempio:

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

Se non utilizzi un caricatore automatico di classi, dovrai calcolare le singole require_oncedichiarazioni. Probabilmente avrai bisogno di molte prove ed errori perché la maggior parte degli autori di biblioteche non si preoccuperà di documentarlo.

Inoltre, e nel caso ci sia confusione su questo:

  • Composer ha un programma di installazione GUI ufficiale per Windows e una procedura di installazione da riga di comando copia e incolla per tutte le piattaforme.
  • Composer può essere eseguito localmente e il suo output può essere caricato altrove. Non hai bisogno di SSH nel tuo hosting condiviso.
  • Il comando necessario per installare una libreria può essere copiato e incollato dal sito web del pacchetto - anche se il manutentore del pacchetto non si è preoccupato di documentarlo, packagist.org lo genera per impostazione predefinita.

Composer non è perfetto e non si adatta a tutti i casi d'uso ma, quando si tratta di installare una libreria che si basa su di essa, è senza dubbio la migliore alternativa ed è abbastanza decente.


Ho controllato altre risposte successive alla mia. Si dividono principalmente in due categorie:

  1. Installa una libreria e scrivi con essa uno script di download personalizzato
  2. Utilizza un'interfaccia web in linea per Composer

A meno che non mi manchi qualcosa, nessuno di loro affronta i reclami espressi dall'OP:

  • Curva di apprendimento
  • Utilizzo di software di terze parti
  • Possibilità di sviluppare direttamente sul server (utilizzando SSH, presumo)
  • Albero delle dipendenze potenzialmente profondo

23
Se questo non convince tutti a usare solo il compositore, niente potrà ...
ingannare

3
Prima di tutto la versione corrente di composer necessita di proc_open () che non è disponibile ovunque. E ci sono anche altri problemi. Anche se sono d'accordo sul fatto che il compositore abbia i suoi meriti, ho sempre saputo che un giorno avrei incontrato un problema e questo giorno è stato. Devo ancora capire come installare una libreria condivisa per oltre 50 applicazioni client (utilizzando Composer).
karvonen

7
Vorrei che gli sviluppatori di librerie smettessero di usare Composer. È vietato in qualsiasi ambiente di produzione serio. Le persone che si nascondono dietro "usa solo il compositore" non hanno idea di cosa stanno facendo in primo luogo.
IncredibleHat

108

Puoi provare https://php-download.com/ che può aiutarti a scaricare tutte le dipendenze il più delle volte insieme alla vendorcartella. Promette compositore non richiesto. Ho provato io stesso. Trova e crea tutte le cartelle richieste e lo zippa per il download. Funziona perfettamente !!


4
Funziona perfettamente! Grazie !!
Yousphere

23
Questa dovrebbe essere la risposta accettata. Fa semplicemente quello che fa il compositore e poi restituisce un zip

Non ha tutte le librerie di GitHub. Quando provo a usare questo per esempio: github.com/mgp25/Instagram-API dice che non riesce a trovarlo.
Andi Hamolli

3
La risposta sopra indica tanti passaggi da fare mentre il sito Web lo semplifica a 1 passaggio scaricabile. Non sono un programmatore professionista ma PHP mi permette di fare cose folli così facilmente che non ho mai avuto bisogno di imparare SSH o compositore o pacchetto ... Questi sono pensati per geek e professionisti ... Il sito web ha rimosso questa limitazione .. ... credo che tutti coloro che hanno votato positivamente la mia risposta ritengano che il sito web lo faccia meglio del compositore ..... Se puoi farlo ... aiuterà tutti i programmatori non geek
jahajee.com

4
@ ÁlvaroGonzález. Personalmente non mi interessa se il compositore compila un progetto su un'altra macchina. Semplicemente non ho i privilegi di installazione su tutte le macchine su cui lavoro e talvolta ho bisogno di ottenere una libreria su una macchina Windows senza eseguire un file exe. Apprezzo il compositore, semplicemente non posso sempre usarlo, il che è stato frustrante senza che questo sito si precompilasse per me.
Altimus Prime

9

Sto utilizzando l'hosting condiviso per un sito Web e non posso eseguire comandi da lì. Oltre a eseguire il compositore tramite la richiesta di script php che richiedo tramite browser, di solito utilizzo questo flusso di lavoro:

  • Assicurati di aver installato php localmente.
  • Crea directory sul desktop.
  • scarica composer.phar da https://getcomposer.org/download/ (sotto l'intestazione * Download manuale ) e posizionalo nella directory.
  • crea un file composer.json e incolla in esso i seguenti contenuti

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
    
  • Sfoglia la directory con la shell di tua scelta (bash, git-bash, cmd, windows bash)

  • genere php composer.phar update screenshot dell'output di bash
  • Carica la directory del fornitore sul tuo server web tramite ftp o qualsiasi meccanismo tu usi.
  • includi nel tuo progetto php dove carichi le tue librerie (modifica il percorso in cui hai caricato la directory del fornitore in modo che includa quel file di caricamento automatico)

    require_once('vendor/autoload.php');

In questo modo ottieni il vantaggio della gestione delle dipendenze e non devi includere manualmente tutti i miliardi di file e scaricare manualmente tutte le dipendenze, e aggiornarle è facile come digitare php composer.phar updatee quindi sostituire la directory del fornitore sul tuo server con il nuovo.


4

Ho dovuto farlo per un server FTP a cui non avevo accesso SSH. Il sito elencato qui ha funzionato, quindi mi sono reso conto che puoi semplicemente eseguire un'installazione del compositore sul tuo server (usando la versione PHP di destinazione), quindi copiare tutti i file.


1
Questa dovrebbe essere la risposta. Ha funzionato perfettamente per me,
Michael Walter,

1
Puoi spiegare meglio la tua risposta? Scusa per la mia stupidità.
Andi Hamolli

1
@IchHabsDrauf Fondamentalmente ha intenzione di usare il compositore (in questa parte, non è proprio la risposta) e di copiare i file nell'ambiente di produzione. Il mio commento a questo sarebbe che forse ci sono persone senza compositore anche nell'ambiente di sviluppo, quindi questa non è davvero una risposta.
Gall Annonim

3

Questa non è la soluzione definitiva ma per me è stato di grande aiuto per la maggior parte dei casi: https://github.com/Wilkins/composer-file-loader

Ti permette di caricare il file composer.json proprio come farebbe il compositore. Ciò ti consente di caricare il file composer.json senza composer (quindi in teoria PHP 5.2 è sufficiente)

So che la domanda è vecchia ma spero che possa aiutare qualcuno.


1

Una soluzione alternativa che ha funzionato per me (poiché php-download era inattivo) può essere realizzata creando il tuo piccolo downloader di compositori locale.

  1. Scarica e installa XAMPP localmente: https://www.apachefriends.org/index.html
  2. Scarica e installa il compositore localmente: https://getcomposer.org/download/
  3. Apri commandprompt, vai a dire c:\tempe e digita semplicemente la dipendenza del compositore, ad esempio:composer require league/oauth2-client
  4. Copia i file dalla c:\tempcartella al tuo host web utilizzando un programma FTP
  5. Aggiungi questo all'inizio del tuo php: require("vendor/autoload.php");

Ha funzionato come un fascino! Grazie per questo :)
ajmeese7
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.