Composer PHP paketlerini Composer olmadan nasıl kurarım?


103

Coinbase PHP API'yi kurmaya çalışıyorum ama Composer gerektiriyor:

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

Composer'ı kullanmak zorunda kalmadan, composer paketlerini doğrudan sunucuma yüklememe izin veren evrensel bir PHP çözümü (belki bir işlev) arıyorum.

Composer'ın geliştiricilerinin insanlara yardım ettiklerine inandıklarını düşünüyorum, ancak aslında 'Composer engeli' nedeniyle web geliştirmeyi öğrenmekten alıkonulan binlerce yeni geliştirici var.

Composer olmadan kurabileceğimiz esnek bir çözüm veya bir yaklaşım olsaydı gerçekten yardımcı olur muydu? Bunu nasıl yapabilirim?

Lütfen alaycı yorumlarla yanıt vermeyin . Composer'ı kullanmak istemeyen insanlar var ve web geliştirme yapmak için neden belirli bir üçüncü taraf yazılımına dahil edilmemiz gerektiğini anlamıyorum.


6
Composer kullanan tüm paketler hala PHP dosyalarıyla dolu dizinlerdir. Bunları, besteci var olmadan önceki gibi kurabilirsiniz: onları bir yere ve includedosyaları kopyalayın .
deceze

2
Composer tabanlı kurulum, neredeyse her zaman paket ana sayfasında gösterilen tek bir komutun çalıştırılmasını gerektirir. Manuel kurulum için kullanım durumları olduğunu anlıyorum ama bu asla daha kolay bir yöntem olmayacak.
Álvaro González

21
@ ÁlvaroGonzález Yorumunuza daha fazla katılmıyorum. Lütfen bakınız: okmaya.com/2016/03/13/package-managers-hate-npm-composer . Paket yöneticilerinin bazı insanlar ve projeler için harika olmadığını söylemiyorum - sadece projenize bir klasör atıp ona referans vermekten daha fazla çalışma ve çaba gerektiriyorlar.
dallin

3
@dallin Başlığa rağmen, bu makale çoğunlukla modern yüksek mühendislik yapıları ve araç zincirleri hakkında bir ranttır (kendi başına bir sorun). 30 bağımlılık içeren bir kitaplık kurmak istiyorsanız, Composer'ı 30 manuel kurulum lehine atmak sizi daha erkeksi ya da her neyse hissetmenize neden olabilir, ancak yeni başlayan geliştiriciler için bunu daha kolay, çok daha az demem.
Álvaro González

9
@ ÁlvaroGonzález Dürüst olmak gerekirse, 30 bağımlılık içeren bir kütüphane kurmak zorunda kalmadım (kötü tasarlanmış tbh sesler). Eminim paket yöneticisi olmadan bir kabus olurdu. Yine de deneyimlerim bu makaleye benzer. Genelde bir veya iki bağımlılığı olan bir şey yüklemeye çalışıyorum ve sonunda daha kodlamaya başlamadan paket yöneticisiyle sorunları gidermek için zamanımı harcamak zorunda kalıyorum. Hata mesajları çok sık ve inanılmaz derecede belirsiz ve ezoteriktir. Bu, duygularımı daha iyi gösterebilir : imgur.com/r/webdev/bO7oTf6 . PM'ler ile deneyimlerim de benzerdi.
dallin

Yanıtlar:


38

composer.jsonDosya bağımlılıkları listeler. Örneğinizde:

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

Daha sonra, paketçi sitesinde ilgili paketleri bulmalısınız . Her bağımlılık için aynı işlemi tekrarlayın: karşılık gelen composer.jsondosyalarında ek bağımlılıklar bulun ve tekrar arayın.

Nihayet gerekli paketlerin tam bir listesine sahip olduğunuzda, hepsini tek tek yüklemeniz yeterlidir. Çoğunlukla, dosyaları proje dizininizin herhangi bir yerine bırakmanız yeterlidir. Ancak PHP'nin gerekli sınıfları bulabileceğinden de emin olmalısınız. Composer'in otomatik yükleyicisini kullanmadığınız için, bunları kendi özel otomatik yükleyicinize eklemeniz gerekir. Bilgileri ilgili composer.jsondosyalardan öğrenebilirsiniz , örneğin:

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

Sınıf otomatik yükleyici kullanmıyorsanız, bireysel require_onceifadeleri bulmanız gerekir . Muhtemelen çok fazla deneme yanılmaya ihtiyacınız olacak çünkü çoğu kütüphane yazarı bunu belgelemekle ilgilenmeyecektir.

Ayrıca, bu konuda kafa karışıklığı olması durumunda:

  • Composer, Windows için resmi bir GUI yükleyicisine ve tüm platformlar için bir kopyala ve yapıştır komut satırı kurulum prosedürüne sahiptir.
  • Composer yerel olarak çalıştırılabilir ve çıktısı başka bir yere yüklenebilir. Paylaşımlı hostinginizde SSH'ye ihtiyacınız yok.
  • Bir kitaplık kurmak için gereken komut paket web sitesinden kopyalanıp yapıştırılabilir - paket bakıcısı bunu belgelemekle ilgilenmemiş olsa bile, packagist.org varsayılan olarak onu oluşturur.

Composer mükemmel değil ve tüm kullanım durumlarına uymuyor, ancak ona dayanan bir kitaplık kurmaya gelince, şüphesiz en iyi alternatif ve oldukça iyi bir alternatif.


Benden sonra gelen diğer cevapları kontrol ettim. Çoğunlukla iki kategoriye ayrılırlar:

  1. Bir kitaplık kurun ve onunla özel bir indirme betiği yazın
  2. Composer için çevrimiçi bir web tabanlı arayüz kullanın

Bir şeyi kaçırmıyorsam, hiçbiri OP tarafından ifade edilen şikayetleri ele almıyor:

  • Öğrenme eğrisi
  • Üçüncü taraf yazılımların kullanımı
  • Doğrudan sunucu üzerinde geliştirme imkanı (SSH kullanarak, sanırım)
  • Potansiyel olarak derin bağımlılık ağacı

28
Bu, herkesi sadece besteciyi kullanmaya ikna etmezse, hiçbir şey…
durdurmaz

3
Öncelikle, bestecinin mevcut sürümü her yerde bulunmayan proc_open () 'e ihtiyaç duyar. Ve başka sorunlar da var. Bestecinin haklarının olduğu konusunda hemfikir olsam da her zaman bildiğim gibi bir gün bir problemle karşılaşacağımı ve o gün oldu. Henüz 50'den fazla istemci uygulaması için (Composer kullanarak) paylaşılan bir kitaplığın nasıl kurulacağını bulamadım.
karvonen

8
Kütüphane geliştiricilerinin besteciyi kullanmayı bırakmasını diliyorum. Herhangi bir ciddi üretim ortamında olmaz. 'Sadece besteciyi kullan' arkasına saklanan insanların ilk başta ne yaptıkları hakkında hiçbir fikirleri yoktur.
IncredibleHat

1
JS'de gülüyor
Obed Marquez Parlapiano

@ObedMarquezParlapiano'nun söylemeye çalıştığı şeyin, paket yönetiminin yalnızca proje bağımlılıklarını ele almak için bir araç olduğunu ve ilkiyle ilgili şikayetler genellikle ikincisinden kaynaklandığını, çünkü en azından PHP fiili standart aracının herkes gibi makul derecede güvenilir olduğunu düşünüyorum. Node.js'nin NPM'si ile mücadele edenlerin iddia edebilir. Tabii ki yanılıyor olabilirim.
Álvaro González

116

Çoğu zaman tüm bağımlılıkları klasörle birlikte indirmenize yardımcı olabilecek https://php-download.com/ deneyebilirsiniz vendor. Besteciye gerek olmadığını vaat ediyor. Kendim denedim. Gerekli tüm klasörleri bulur ve oluşturur ve indirmek için sıkıştırır. Mükemmel çalışıyor !!


4
Mükemmel çalışıyor! Teşekkürler !!
Yousphere

25
Kabul edilen cevap bu olmalıdır. Yalnızca bestecinin yaptığını yapar ve sonra bir zip döndürür

Github'daki tüm kitaplıklara sahip değil. Örneğin bunu kullanmaya çalıştığımda: github.com/mgp25/Instagram-API bulamadığını söylüyor.
Andi Hamolli

3
Yukarıdaki cevap, web sitesi 1 indirilebilir adıma indirirken yapılması gereken pek çok adımı anlatıyor. Profesyonel olarak bir programcı değilim ama PHP çılgınca şeyleri o kadar kolay yapmama izin veriyor ki, SSH'yi, besteciyi veya paketi öğrenmeye hiç ihtiyaç duymadım .... Bunlar meraklılar ve profesyoneller içindir .... Web sitesi bu sınırlamayı kaldırdı .. ... Cevabımı yükselten herkesin web sitesinin bunu besteciden daha iyi yaptığını bulduğuna inanıyorum ..... Bunu yapabilirseniz .... Bu, tüm inek olmayan programcılara yardımcı olacaktır
jahajee.com

4
@ ÁlvaroGonzález. Şahsen bestecinin bir projeyi başka bir makinede derlemesi umurumda değil. Sadece üzerinde çalıştığım tüm makinelerde yükleme ayrıcalıklarına sahip değilim ve bazen bir exe dosyası çalıştırmadan bir Windows makinesinde bir kitaplık edinmem gerekiyor. Besteciye minnettarım, onu her zaman kullanamıyorum, bu site olmadan benim için ön derleme yapmak sinir bozucuydu.
Altimus Prime

9

Bir web sitesi için paylaşılan barındırma kullanıyorum ve orada komutları yürütemiyorum. Composer'ı tarayıcı aracılığıyla talep ettiğim php komut dosyası isteği aracılığıyla çalıştırmanın yanı sıra, genellikle şu iş akışını kullanıyorum:

  • Yerel olarak kurulu php'ye sahip olduğunuzdan emin olun.
  • Masaüstünde dizin oluşturun.
  • composer.phar'ı https://getcomposer.org/download/ adresinden indirin ( * Manuel İndirme başlığı altında ) ve dizine yerleştirin.
  • composer.json dosyasını aşağıdaki içeriği yapıştırın

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
    
  • Seçtiğiniz kabuğa sahip dizine göz atın (bash, git-bash, cmd, windows bash)

  • tip php composer.phar update bash çıktısının ekran görüntüsü
  • Satıcı dizinini ftp veya kullandığınız herhangi bir mekanik aracılığıyla web sunucunuza yükleyin.
  • kütüphanelerinizi yüklediğiniz php projenize dahil edin (satıcı dizinini yüklediğiniz yere giden yolu, bu otomatik yükleme dosyasını içerecek şekilde değiştirin)

    require_once('vendor/autoload.php');
    

Bu şekilde bağımlılık yönetiminden faydalanırsınız ve milyonlarca dosyayı manuel olarak dahil etmek ve tüm bağımlılıkları manuel olarak indirmek zorunda kalmazsınız ve bunları güncellemek, yazıp php composer.phar updatesunucunuzdaki satıcı dizinini değiştirmek kadar kolaydır . yeni bir.


4

Bunu SSH erişimim olmayan bir FTP sunucusu için yapmak zorunda kaldım. Burada listelenen site çalıştı, sonra kendi sunucunuza (hedefinizin PHP sürümünü kullanarak) bir besteci yüklemesi yapabileceğinizi ve ardından tüm dosyaları kopyalayabileceğinizi fark ettim.


1
Cevap bu olmalı. Benim için mükemmel çalıştı,
Michael Walter

1
Cevabınızı daha iyi açıklar mısınız? Aptallığım için özür dilerim.
Andi Hamolli

1
@IchHabsDrauf Temel olarak besteciyi kullanmaktan (bu kısımda, bu gerçekten cevaplayıcı değil) ve daha sonra dosyaları üretim ortamına kopyalamaktan bahsediyor. Bu konuda benim yorumum, belki dev ortamında bestecisi olmayan insanlar da olabilir, dolayısıyla bu gerçekten bir cevaplayıcı değil.
Gall Annonim

3

Bu nihai çözüm değil ama benim için çoğu durumda büyük bir yardımcı oldu: https://github.com/Wilkins/composer-file-loader

Composer.json dosyasını, composer'ın yaptığı gibi yüklemenize izin verin. Bu, composer.json dosyasını composer olmadan yüklemenize izin verir (bu nedenle teorik olarak PHP 5.2 yeterlidir)

Sorunun eski olduğunu biliyorum ama umarım birine yardımcı olur.


1

Benim için çalışan alternatif bir çözüm (php-download kapalı olduğundan), kendi küçük yerel besteci indiricinizi oluşturarak yapılabilir.

  1. XAMPP'yi yerel olarak indirin ve kurun: https://www.apachefriends.org/index.html
  2. Besteciyi yerel olarak indirin ve kurun: https://getcomposer.org/download/
  3. Komut istemini açın, söylemek için gezinin c:\tempve basitçe besteci bağımlılığını yazın, örneğin:composer require league/oauth2-client
  4. Dosyaları c:\tempbir FTP programı kullanarak klasörünüzden web barındırıcınıza kopyalayın
  5. Bunu php'nizin üstüne ekleyin: require("vendor/autoload.php");

Büyü gibi çalıştı! Bunun için teşekkürler :)
Aaron Meese
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.