मैं संगीतकार कम्पोज़र PHP संकुल कैसे स्थापित करूँ?


97

मैं Coinbase PHP API को स्थापित करने की कोशिश कर रहा हूँ, लेकिन इसके लिए संगीतकार की आवश्यकता है:

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

मैं एक सार्वभौमिक PHP समाधान (शायद एक फ़ंक्शन) की तलाश कर रहा हूं ताकि मुझे संगीतकार का उपयोग किए बिना मुझे सीधे अपने सर्वर पर संगीतकार पैकेज स्थापित करने दें।

मुझे लगता है कि कंपोज़र के डेवलपर्स का मानना ​​है कि वे लोगों की मदद कर रहे हैं, लेकिन वास्तव में हजारों शुरुआती डेवलपर्स हैं जो 'कम्पोज़र बैरियर' द्वारा वेब विकास सीखने से बाहर किए जा रहे हैं।

यह वास्तव में मदद करेगा अगर कोई लचीला समाधान या कुछ दृष्टिकोण था जहां हम बिना संगीतकार के स्थापित कर सकते थे? मैं यह कैसे कर सकता हूँ?

कृपया कुछ व्यंग्यात्मक टिप्पणी के साथ जवाब न दें । ऐसे लोग हैं जो संगीतकार का उपयोग नहीं करना चाहते हैं और मुझे नहीं लगता है कि वेब विकास करने के लिए हमें एक विशिष्ट तृतीय-पक्ष सॉफ़्टवेयर में क्यों हेर किया जाना चाहिए।


6
कंपोज़र का उपयोग करने वाले सभी पैकेज अभी भी PHP फ़ाइलों से भरी निर्देशिका हैं। आप उन्हें उसी तरह से स्थापित कर सकते हैं जैसे आपने संगीतकार के अस्तित्व में आने से पहले किया था: उन्हें कहीं और includeफ़ाइलों की प्रतिलिपि बनाएँ ।
deceze

2
कम्पोज़र-आधारित इंस्टॉलेशन का अर्थ एकल कमांड चलाना है, जो लगभग हमेशा पैकेज होम पेज में दिखाया जाता है। मैं समझता हूं कि मैन्युअल इंस्टॉलेशन के लिए आप मामलों का उपयोग करते हैं लेकिन यह कभी आसान तरीका नहीं है।
अल्वारो गोंजालेज

19
@ Couldn'tlvaroGonzález मैं आपकी टिप्पणी से अधिक असहमत नहीं हो सकता। कृपया देखें: okmaya.com/2016/03/13/package-managers-hate-npm-composer । मैं यह नहीं कह रहा हूं कि पैकेज मैनेजर कुछ लोगों और परियोजनाओं के लिए महान नहीं हैं - बस यह कि उन्हें अक्सर आपके प्रोजेक्ट में एक फ़ोल्डर छोड़ने और उसे संदर्भित करने की तुलना में अधिक काम और प्रयास की आवश्यकता होती है।
dallin

3
@dallin शीर्षक के बावजूद, यह लेख ज्यादातर आधुनिक अति-इंजीनियर रूपरेखाओं और टूल-चेन (अपनी खुद की एक समस्या) के बारे में एक शेख़ी है। यदि आप एक ऐसी लाइब्रेरी स्थापित करना चाहते हैं जिसमें 30 निर्भरताएँ हों, तो 30 मैन्युअल इंस्टॉल के पक्ष में कम्पोज़र को डंप करना आपको अधिक मर्दाना या जो भी लग सकता है, लेकिन मैं इसे आसान नहीं कहूंगा, शुरुआती डेवलपर्स के लिए बहुत कम है।
एल्वारो गोंजालेज

9
@ BelvaroGonzález ईमानदार होने के लिए, मुझे 30 आश्रितों के साथ एक पुस्तकालय स्थापित करने की आवश्यकता नहीं थी (लगता है खराब डिजाइन किए गए tbh)। मुझे यकीन है कि यह पैकेज मैनेजर के बिना एक बुरा सपना होगा। मेरे अनुभव हालांकि उस लेख के समान हैं। मैं आमतौर पर एक या दो निर्भरता के साथ कुछ स्थापित करने की कोशिश करता हूं और अंत में पैकेज मैनेजर के साथ समस्याओं का निवारण करने में अपना समय बिताता हूं, इससे पहले कि मैं कोडिंग भी करूं। त्रुटि संदेश वैसे भी अक्सर और अविश्वसनीय रूप से अस्पष्ट और गूढ़ होते हैं। यह मेरी भावनाओं को बेहतर रूप से दर्शाया सकता है: imgur.com/r/webdev/bO7oTf6 । पीएम के साथ मेरे अनुभव भी ऐसे ही रहे हैं।
dallin

जवाबों:


38

composer.jsonफ़ाइल निर्भरता सूचीबद्ध करता है। आपके उदाहरण में:

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

फिर आपको पैकेजिस्ट साइट में संबंधित पैकेज खोजना होगा । प्रत्येक निर्भरता के लिए एक ही प्रक्रिया को दोहराएं: उनके अनुरूप अतिरिक्त निर्भरता खोजेंcomposer.json फाइलों और फिर से खोजें।

जब आपके पास अंततः आवश्यक पैकेजों की पूरी सूची होती है, तो आपको केवल उन सभी को एक-एक करके स्थापित करने की आवश्यकता होती है। अधिकांश भाग के लिए, यह आपके प्रोजेक्ट डायरेक्टरी में कहीं न कहीं फाइलों को छोड़ने की बात है। लेकिन आपको यह भी सुनिश्चित करना होगा कि पीएचपी को आवश्यक कक्षाएं मिल सकती हैं। चूंकि आप संगीतकार के ऑटो-लोडर का उपयोग नहीं कर रहे हैं, इसलिए आपको उन्हें अपने स्वयं के कस्टम ऑटोलैडर में जोड़ना होगा। आप संबंधित composer.jsonफाइलों से जानकारी का पता लगा सकते हैं , जैसे:

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

यदि आप एक ऑटो-लोडर का उपयोग नहीं करते हैं, तो आपको व्यक्ति का पता लगाने की आवश्यकता होगी require_once विवरणों । आपको शायद बहुत सारे परीक्षण और त्रुटि की आवश्यकता होगी क्योंकि अधिकांश पुस्तकालय लेखक उस दस्तावेज का ध्यान नहीं रखेंगे।

इसके अलावा, और इस मामले में सिर्फ भ्रम की स्थिति है:

  • संगीतकार के पास विंडोज के लिए एक आधिकारिक जीयूआई इंस्टॉलर है और सभी प्लेटफार्मों के लिए कमांड-लाइन इंस्टॉलेशन प्रक्रिया को कॉपी और पेस्ट करता है।
  • कंपोज़र को स्थानीय रूप से चलाया जा सकता है और इसका आउटपुट सिर्फ कहीं और अपलोड किया जाता है। आपको अपनी साझा होस्टिंग में SSH की आवश्यकता नहीं है।
  • लाइब्रेरी स्थापित करने के लिए आवश्यक कमांड को पैकेज वेब साइट से कॉपी और पेस्ट किया जा सकता है - भले ही पैकेज मेंटेनर ने इसे दस्तावेज करने की परवाह न की हो, packagist.org इसे डिफ़ॉल्ट रूप से उत्पन्न करता है।

संगीतकार सही नहीं है और यह सभी उपयोग के मामलों के अनुरूप नहीं है, लेकिन जब यह एक पुस्तकालय स्थापित करने की बात आती है जो इस पर निर्भर करता है, तो यह निस्संदेह सबसे अच्छा विकल्प है और यह काफी सभ्य है।


मैंने अन्य उत्तरों की जाँच की है जो मेरे बाद आए हैं। वे ज्यादातर दो श्रेणियों में आते हैं:

  1. एक पुस्तकालय स्थापित करें और इसके साथ एक कस्टम डाउनलोड स्क्रिप्ट लिखें
  2. संगीतकार के लिए एक ऑनलाइन वेब आधारित इंटरफ़ेस का उपयोग करें

जब तक मुझे कुछ याद नहीं आ रहा है, उनमें से कोई भी ओपी द्वारा व्यक्त की गई शिकायतों को संबोधित नहीं करता है:

  • सीखने की अवस्था
  • तृतीय-पक्ष सॉफ़्टवेयर का उपयोग
  • सर्वर पर अधिकार विकसित करने की संभावना (SSH का उपयोग करके, मुझे लगता है)
  • संभावित रूप से गहरी निर्भरता का पेड़

23
यदि यह सिर्फ उपयोग संगीतकार के लिए हर किसी को समझाने नहीं करता है, कुछ भी नहीं होगा ...
deceze

3
संगीतकार के सभी वर्तमान संस्करण के पहले proc_open () की आवश्यकता है जो हर जगह उपलब्ध नहीं है। और अन्य समस्याएं भी हैं। जबकि मैं मानता हूं कि संगीतकार की अपनी खूबियां हैं जिन्हें मैं हमेशा से जानता हूं कि मैं एक दिन एक समस्या में रहूंगा और यह दिन था। मुझे अभी तक पता नहीं है कि 50+ क्लाइंट एप्लिकेशन (संगीतकार का उपयोग करके) के लिए साझा लाइब्रेरी कैसे स्थापित की जाए।
करवोनें

7
काश लाइब्रेरी देवता संगीतकार का उपयोग करना बंद कर देते। यह किसी भी गंभीर उत्पादन वातावरण में एक नहीं जाना है। जो लोग 'सिर्फ कंपोजर का उपयोग करते हैं' के पीछे छिपते हैं, उन्हें इस बात का कोई अंदाजा नहीं होता कि वे पहले क्या कर रहे हैं।
अतुल्य

108

आप https://php-download.com/ की कोशिश कर सकते हैं जो आपको vendorफ़ोल्डर के साथ-साथ अधिकांश निर्भरता को डाउनलोड करने में मदद कर सकता है । यह वादा करता है कि संगीतकार की आवश्यकता नहीं है। खुद कोशिश की। यह सभी आवश्यक फ़ोल्डरों को ढूंढता है और डाउनलोड के लिए ज़िप करता है। अच्छी तरह से काम !!


4
पूरी तरह से काम करना! धन्यवाद !!
यूसुफ

23
यह स्वीकृत उत्तर होना चाहिए। यह सिर्फ वही करता है जो संगीतकार करता है और फिर एक ज़िप देता है

यह github से सभी पुस्तकालयों नहीं है। जब मैं इसे उदाहरण के लिए उपयोग करने का प्रयास करता हूं: github.com/mgp25/Instagram-API यह कहता है कि यह इसे नहीं पा सकता है।
एंडी हैमोली

3
ऊपर दिया गया उत्तर कई चरणों को बताता है जबकि वेबसाइट इसे 1 डाउनलोड करने योग्य चरणों में ढील देती है। मैं पेशेवर रूप से एक प्रोग्रामर नहीं हूं, लेकिन PHP मुझे इतनी आसानी से पागल चीजें करने की अनुमति देता है कि मुझे एसएसएच या संगीतकार या पैकेज सीखने की आवश्यकता नहीं है .... ये गीक्स और पेशेवरों के लिए हैं .... वेबसाइट ने उस सीमा को हटा दिया। ... मुझे विश्वास है कि उन सभी लोगों ने जो मेरे उत्तर को गलत पाया, वेबसाइट ने इसे संगीतकार से बेहतर किया ..... यदि आप ऐसा कर सकते हैं .... यह सभी गैर geek प्रोग्रामर की मदद करेगा
jahajee.com

4
@ ÁlvaroGonzález। व्यक्तिगत रूप से मुझे परवाह नहीं है अगर संगीतकार किसी अन्य मशीन पर एक परियोजना को संकलित करता है। मेरे पास अभी उन सभी मशीनों पर विशेषाधिकार स्थापित नहीं हैं जिन पर मैं काम करता हूं, और कभी-कभी मुझे एक एक्साई फ़ाइल को चलाने के बिना एक विंडोज़ मशीन पर एक पुस्तकालय प्राप्त करने की आवश्यकता होती है। मैं संगीतकार की सराहना करता हूं, मैं हमेशा इसका उपयोग नहीं कर सकता, जो कि इस साइट के बिना मेरे लिए पहले से निराश था।
एल्टिमस प्राइम

9

मैं एक वेबसाइट के लिए साझा होस्टिंग का उपयोग कर रहा हूं और वहां कमांड निष्पादित नहीं कर सकता। पीएचपी स्क्रिप्ट के माध्यम से संगीतकार को चलाने के अलावा, जो मैं ब्राउज़र के माध्यम से अनुरोध करता हूं, मैं आमतौर पर इस वर्कफ़्लो का उपयोग करता हूं:

  • सुनिश्चित करें कि आपने स्थानीय रूप से php स्थापित किया है।
  • डेस्कटॉप पर निर्देशिका बनाएं।
  • https://getcomposer.org/download/ (शीर्ष लेख * मैनुअल डाउनलोड के तहत ) से कंपोज़र डाउनलोड करें और इसे निर्देशिका में रखें।
  • एक फाइल कंपोजर बनाएं । इसमें निम्नलिखित सामग्री पेस्ट करें

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
  • अपनी पसंद के शेल के साथ डायरेक्टरी में ब्राउज़ करें (bash, git-bash, cmd, windows bash)

  • प्रकार php composer.phar update बैश आउटपुट का स्क्रीनशॉट
  • अपने वेबसर्वर को ftp या जो भी मैकेनिक उपयोग करते हैं, उसके लिए विक्रेता निर्देशिका अपलोड करें।
  • अपने php प्रोजेक्ट में शामिल करें जहाँ आप अपनी लाइब्रेरियों को लोड करते हैं (जहाँ आप ने विक्रेता को अपलोड किया है उसके लिए पथ को संशोधित करें ताकि इसमें वह ऑटोट्रैड फ़ाइल शामिल हो)

    require_once('vendor/autoload.php');

इस तरह से आपको निर्भरता प्रबंधन का लाभ मिलता है और आपको मैन्युअल रूप से सभी गज़िल की फ़ाइलों को शामिल नहीं करना पड़ता है और सभी निर्भरताओं को मैन्युअल रूप से डाउनलोड करना पड़ता है, और उन्हें अपडेट करना उतना ही आसान होता है जितना कि टाइपिंग करना php composer.phar updateऔर फिर अपने सर्वर पर वेंडर डायर को बदलना। नया।


4

मुझे एफ़टीपी सर्वर के लिए ऐसा करना पड़ा, जिसमें मुझे एसएसएच नहीं मिला। यहां सूचीबद्ध साइट ने काम किया, तब मुझे एहसास हुआ कि आप बस अपने खुद के सर्वर (अपने लक्ष्य के PHP संस्करण का उपयोग करके) पर एक संगीतकार स्थापित कर सकते हैं, फिर सभी फाइलों को कॉपी करें।


1
यही उत्तर होना चाहिए। मेरे लिए पूरी तरह से काम किया,
माइकल वाल्टर

1
क्या आप कृपया अपने उत्तर को बेहतर ढंग से समझा सकते हैं? मेरी मूर्खता के लिए क्षमा करें।
एंडी हैमोली

1
@ इचब्सड्राफ मूल रूप से वह संगीतकार (इस भाग में, इसका वास्तव में नहीं है) का उपयोग करने के लिए और उत्पादन पर्यावरण के लिए फाइलों पर कॉपी की तुलना में। उस पर मेरी टिप्पणी यह ​​होगी कि शायद देव विद्या पर भी संगीतकार के बिना लोग हैं, इस प्रकार यह वास्तव में एक अन्वेषक नहीं है।
गैल एनोनिम

3

यह अंतिम समाधान नहीं है, लेकिन मेरे लिए यह अधिकांश मामलों के लिए एक बड़ी मदद थी: https://github.com/Wilkins/composer-file-loader

जैसे ही संगीतकार करेगा, आप कंपोज़र.जॉन फ़ाइल लोड करने की अनुमति देंगे। यह आपको संगीतकार के बिना कंपोजर लोड करने की अनुमति देता है। (इसलिए सैद्धांतिक रूप से PHP 5.2 पर्याप्त है)

मुझे पता है कि सवाल पुराना है लेकिन मुझे उम्मीद है कि यह किसी की मदद करेगा।


1

एक वैकल्पिक समाधान जो मेरे लिए काम करता था (चूंकि php-download down था) अपने खुद के छोटे स्थानीय संगीतकार डाउनलोडर बनाकर किया जा सकता है।

  1. XAMPP को स्थानीय रूप से डाउनलोड और इंस्टॉल करें : https://www.apachefriends.org/index.html
  2. स्थानीय रूप से संगीतकार डाउनलोड और इंस्टॉल करें: करें https://getcomposer.org/download/
  3. कमांडपॉम्प्ट खोलें, कहने के लिए नेविगेट करें c:\tempउदाहरण के लिए, और और बस संगीतकार निर्भरता टाइप करें:composer require league/oauth2-client
  4. फाइलों को अपने से कॉपी करें c:\tempएफ़टीपी प्रोग्राम का उपयोग करके फ़ोल्डर को अपने वेब होस्ट पर
  5. इसे अपने php के शीर्ष पर जोड़ें: require("vendor/autoload.php");

एक जादू की तरह काम किया! इसके लिए धन्यवाद :)
ajmeese7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.