Bagaimana cara menginstal paket Composer PHP tanpa Composer?


99

Saya mencoba menginstal Coinbase PHP API tetapi membutuhkan Komposer:

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

Saya mencari solusi PHP universal (mungkin fungsi) untuk memungkinkan saya menginstal paket komposer langsung ke server saya, tanpa harus menggunakan Komposer.

Saya pikir para pengembang Komposer percaya bahwa mereka membantu orang, tetapi sebenarnya ada ribuan pengembang pemula yang tidak dapat mempelajari pengembangan web oleh 'Penghalang komposer'.

Akan sangat membantu jika ada solusi yang fleksibel atau pendekatan di mana kita dapat menginstal tanpa Komposer? Bagaimana saya bisa melakukan ini?

Mohon jangan menanggapi dengan komentar sarkastik . Ada orang yang tidak ingin menggunakan Composer dan saya tidak mengerti mengapa kita harus digiring ke perangkat lunak pihak ketiga tertentu untuk melakukan pengembangan web.


6
Semua paket yang menggunakan komposer masih berupa direktori yang penuh dengan file PHP. Anda dapat menginstalnya persis seperti yang Anda lakukan sebelum komposer ada: salin di suatu tempat dan includefile.
menipu

2
Instalasi berbasis komposer berarti menjalankan satu perintah, yang hampir selalu ditampilkan di halaman muka paket. Saya mengerti ada kasus penggunaan untuk instalasi manual tetapi itu tidak akan pernah menjadi metode yang lebih mudah.
Álvaro González

21
@ ÁlvaroGonzález Saya sangat setuju dengan komentar Anda lagi. Silakan lihat: okmaya.com/2016/03/13/package-managers-hate-npm-composer . Saya tidak mengatakan manajer paket tidak bagus untuk beberapa orang dan proyek - hanya saja mereka sering membutuhkan lebih banyak kerja dan usaha daripada hanya menjatuhkan folder di proyek Anda dan mereferensikannya.
dallin

3
@dallin Terlepas dari judulnya, artikel itu sebagian besar adalah kata-kata kasar tentang kerangka kerja dan rantai alat yang direkayasa secara berlebihan (masalahnya sendiri). Jika Anda ingin menginstal pustaka yang kebetulan memiliki 30 dependensi, membuang Composer ke 30 penginstalan manual dapat membuat Anda merasa lebih jantan atau apa pun, tetapi saya tidak akan menyebutnya lebih mudah, apalagi untuk pengembang pemula.
Álvaro González

9
@ ÁlvaroGonzález Sejujurnya, saya tidak perlu menginstal perpustakaan dengan 30 dependensi (kedengarannya desain yang buruk tbh). Saya yakin ini akan menjadi mimpi buruk tanpa manajer paket. Pengalaman saya mirip dengan artikel itu. Saya biasanya mencoba menginstal sesuatu dengan satu atau dua dependensi dan akhirnya harus menghabiskan waktu saya untuk memecahkan masalah dengan manajer paket bahkan sebelum saya memulai pengkodean. Pesan kesalahan terlalu sering dan sangat kabur dan esoteris. Ini mungkin menggambarkan perasaan saya dengan lebih baik: imgur.com/r/webdev/bO7oTf6 . Pengalaman saya dengan PM juga serupa.
dallin

Jawaban:


39

The composer.jsonberkas daftar dependensi. Dalam contoh Anda:

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

Anda kemudian harus menemukan paket yang sesuai di situs pembuat paket . Ulangi proses yang sama untuk setiap dependensi: temukan dependensi tambahan di composer.jsonfile yang sesuai dan cari lagi.

Ketika Anda akhirnya memiliki daftar lengkap dari paket yang dibutuhkan, Anda hanya perlu menginstal semuanya satu per satu. Untuk sebagian besar, ini hanya masalah meletakkan file di suatu tempat di direktori proyek Anda. Tetapi Anda juga harus memastikan bahwa PHP dapat menemukan kelas yang dibutuhkan. Karena Anda tidak menggunakan pemuat otomatis Composer, Anda perlu menambahkannya ke pemuat otomatis kustom Anda sendiri. Anda dapat mengetahui informasi dari composer.jsonfile masing-masing , misalnya:

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

Jika Anda tidak menggunakan pemuat otomatis kelas, Anda harus mencari tahu require_oncepernyataan individual . Anda mungkin memerlukan banyak trial and error karena sebagian besar penulis perpustakaan tidak peduli mendokumentasikannya.

Juga, dan kalau-kalau ada kebingungan tentang ini:

  • Composer memiliki penginstal GUI resmi untuk Windows dan prosedur penginstalan baris perintah salin dan tempel untuk semua platform.
  • Komposer dapat dijalankan secara lokal dan keluarannya hanya diunggah di tempat lain. Anda tidak memerlukan SSH di hosting bersama Anda.
  • Perintah yang diperlukan untuk menginstal pustaka dapat disalin dan ditempel dari situs web paket — bahkan jika pengelola paket tidak peduli untuk mendokumentasikannya, packagist.org membuatnya secara default.

Komposer tidak sempurna dan tidak cocok untuk semua kasus penggunaan tetapi, ketika harus menginstal pustaka yang mengandalkannya, tidak diragukan lagi ini adalah alternatif terbaik dan itu cukup baik.


Saya telah memeriksa jawaban lain yang datang setelah jawaban saya. Mereka kebanyakan terbagi dalam dua kategori:

  1. Instal perpustakaan dan tulis skrip unduhan khusus dengannya
  2. Gunakan antarmuka berbasis web online untuk Komposer

Kecuali saya melewatkan sesuatu, tidak satupun dari mereka menangani keluhan yang diungkapkan oleh OP:

  • Kurva belajar
  • Penggunaan perangkat lunak pihak ketiga
  • Kemungkinan untuk berkembang langsung di server (menggunakan SSH, saya kira)
  • Pohon ketergantungan yang berpotensi dalam

25
Jika ini tidak meyakinkan semua orang untuk hanya menggunakan komposer, tidak ada yang akan…
menipu

3
Pertama-tama, versi komposer saat ini membutuhkan proc_open () yang tidak tersedia di semua tempat. Dan ada masalah lain juga. Meskipun saya setuju bahwa komposer memiliki kelebihannya, saya selalu tahu bahwa saya akan mengalami masalah suatu hari dan hari ini adalah itu. Saya belum menemukan cara memasang pustaka bersama untuk 50+ aplikasi klien (menggunakan Komposer).
karvonen

8
Saya berharap pengembang perpustakaan berhenti menggunakan komposer. Ini tidak boleh dilakukan dalam lingkungan produksi yang serius. Orang yang bersembunyi di balik 'gunakan saja komposer' sama sekali tidak tahu apa yang mereka lakukan.
IncredibleHat

110

Anda dapat mencoba https://php-download.com/ yang dapat membantu Anda mengunduh semua dependensi sepanjang waktu bersama dengan vendorfolder. Ini menjanjikan komposer tidak diperlukan. Sudah mencobanya sendiri. Ia menemukan dan membuat semua folder dan zip yang diperlukan untuk diunduh. Bekerja dengan sempurna !!


4
Bekerja dengan sempurna! Terima kasih !!
Yousphere

24
Ini harus menjadi jawaban yang diterima. Itu hanya melakukan apa yang dilakukan komposer dan kemudian mengembalikan zip

Itu tidak memiliki semua perpustakaan dari github. Ketika saya mencoba menggunakan yang ini misalnya: github.com/mgp25/Instagram-API dikatakan tidak dapat menemukannya.
Andi Hamolli

3
Jawaban di atas menjelaskan begitu banyak langkah yang harus dilakukan sementara situs web memudahkannya menjadi 1 langkah yang dapat diunduh. Saya bukan seorang programmer secara profesional tetapi PHP memungkinkan saya melakukan hal-hal gila dengan mudah sehingga saya tidak pernah perlu mempelajari SSH atau komposer atau paket .... Ini dimaksudkan untuk para ahli dan profesional .... Situs web menghapus batasan itu .. ... Saya yakin semua orang yang memberi suara positif pada jawaban saya menganggap situs web melakukannya lebih baik daripada pembuatnya ..... Jika Anda bisa melakukannya .... Ini akan membantu semua pemrogram non-geek
jahajee.com

4
@ Áaroonálina. Secara pribadi saya tidak peduli jika komposer menyusun proyek di mesin lain. Saya hanya tidak memiliki hak penginstalan di semua mesin yang saya gunakan, dan terkadang saya perlu mendapatkan pustaka di mesin windows tanpa menjalankan file exe. Saya menghargai komposer, saya tidak selalu bisa menggunakannya, yang membuat frustasi tanpa situs ini untuk dikompilasi sebelumnya untuk saya.
Altimus Prime

9

Saya menggunakan shared hosting untuk situs web dan tidak dapat menjalankan perintah di sana. Selain menjalankan komposer melalui permintaan skrip php yang saya minta melalui browser, saya biasanya menggunakan alur kerja ini:

  • Pastikan Anda telah menginstal php secara lokal.
  • Buat direktori di desktop.
  • unduh composer.phar dari https://getcomposer.org/download/ (di bawah tajuk * Unduh Manual ) dan letakkan di direktori.
  • buat file composer.json paste di dalamnya konten berikut

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
  • Jelajahi direktori dengan shell pilihan Anda (bash, git-bash, cmd, windows bash)

  • Tipe php composer.phar update tangkapan layar dari keluaran bash
  • Unggah direktori vendor ke server web Anda melalui ftp atau mekanisme apa pun yang Anda gunakan.
  • sertakan dalam proyek php Anda di mana Anda memuat perpustakaan Anda (ubah jalur ke tempat Anda mengunggah direktori vendor sehingga itu akan menyertakan file muat otomatis itu)

    require_once('vendor/autoload.php');

Dengan cara ini Anda mendapatkan manfaat dari manajemen ketergantungan dan Anda tidak perlu memasukkan secara manual semua trilyun file dan mengunduh semua ketergantungan secara manual, dan memperbaruinya semudah mengetik php composer.phar updatedan kemudian mengganti direktori vendor di server Anda dengan baru.


4

Saya harus melakukan ini untuk server FTP yang tidak memiliki akses SSH. Situs yang tercantum di sini berfungsi, kemudian saya menyadari Anda bisa melakukan penginstalan komposer di server Anda sendiri (menggunakan versi PHP target Anda), lalu salin semua file.


1
Itulah jawabannya. Bekerja dengan sempurna untuk saya,
Michael Walter

1
Bisakah Anda menjelaskan jawaban Anda dengan lebih baik? Maaf atas kebodohan saya.
Andi Hamolli

1
@IchHabsDrauf Pada dasarnya dia ingin menggunakan komposer (pada bagian ini, ini bukan jawaban yang sebenarnya) dan daripada menyalin file ke lingkungan produksi. Komentar saya untuk itu adalah mungkin ada orang tanpa komposer di lingkungan dev juga, jadi ini bukan jawaban.
Gall Annonim

3

Ini bukan solusi pamungkas tetapi bagi saya ini sangat membantu untuk sebagian besar kasus: https://github.com/Wilkins/composer-file-loader

Memungkinkan Anda memuat file composer.json seperti yang akan dilakukan komposer. Ini memungkinkan Anda memuat file composer.json tanpa komposer (jadi secara teoritis PHP 5.2 sudah cukup)

Saya tahu pertanyaan itu sudah tua tetapi saya berharap itu akan membantu seseorang.


1

Solusi alternatif yang berhasil untuk saya (karena unduhan php turun) dapat dilakukan dengan membuat pengunduh komposer lokal kecil Anda sendiri.

  1. Unduh dan instal XAMPP secara lokal: https://www.apachefriends.org/index.html
  2. Unduh dan instal komposer secara lokal: https://getcomposer.org/download/
  3. Buka commandprompt, navigasikan untuk mengatakan c:\tempdan dan cukup ketikkan ketergantungan komposer, misalnya:composer require league/oauth2-client
  4. Salin file dari c:\tempfolder Anda ke host web Anda menggunakan program FTP
  5. Tambahkan ini ke bagian atas php Anda: require("vendor/autoload.php");

Bekerja seperti pesona! Terima kasih untuk ini :)
Aaron Meese
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.