संगीतकार: file_put_contents (./ composer.json): स्ट्रीम खोलने में विफल: अनुमति से इनकार किया


98

मैं एक Ubuntu 16.04 सर्वर के लिए Prestissimo स्थापित करने की कोशिश कर रहा हूँ , लेकिन यह एक त्रुटि की ओर जाता है:

$ composer global require "hirak/prestissimo:^0.3"
Changed current directory to /home/kramer65/.composer


  [ErrorException]
  file_put_contents(./composer.json): failed to open stream: Permission denied


require [--dev] [--prefer-source] [--prefer-dist] [--no-progress] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--] [<packages>]...

मैं उपयोगकर्ता के रूप में लॉग इन हूं kramer65, इसलिए मुझे नहीं पता कि यह मेरे होम फ़ोल्डर में क्यों नहीं लिख सकता। एक permission deniedका उपयोग करने के लिए मेरी सामान्य प्रतिक्रिया है sudo, लेकिन संगीतकार हमेशा कहता है:

कम्पोज़र को रूट / सुपर यूजर के रूप में न चलाएं! देखें https://getcomposer.org/root जानकारी के लिए

किसी भी विचार मैं इसे कैसे हल कर सकते हैं?


1
स्पष्ट हो सकता है, लेकिन यह पूछा जाना चाहिए ... आपकी वर्तमान अनुमतियाँ क्या हैं composer.json?
द जेंटलमैन

@ जेंटलमैनमैक्स - ~/.composer/composer.jsonअभी तक कोई फाइल नहीं है।
kramer65

तो ~/.composer/फ़ोल्डर पर अनुमतियाँ क्या हैं ? kramer65यह लिखने का कोई अधिकार नहीं है, ऐसा लगता है, chmodउपयोगी हो सकता है।
एंथनीबी

@ एंथनीबी - हां, अब मैं देख रहा हूं कि ~/.composer/इसका स्वामित्व है root। लेकिन मैंने अभी कुछ अन्य प्रणालियों पर जाँच की और एक नए नए उबंटू 16.04 वीएम पर संगीतकार स्थापित किया, और यह हमेशा स्वामित्व में है root। मैं निश्चित रूप से chmodया chownयह कर सकता हूं , लेकिन क्या इस डिफ़ॉल्ट व्यवहार को बदलना एक अच्छा विचार है?
kramer65

मैं सिर्फ अपने Ubuntu 16.04 पर जाँच करता हूं, वास्तव में .composer रूट के स्वामित्व में है, 755मोड के साथ । इसलिए परिवर्तन मालिक शायद समाधान नहीं है।
एंथनीबी

जवाबों:


259

मुझे लार्वा / लुमेन स्थापित करने के लिए यह समस्या थी।

इसे निम्न कमांड से हल किया जा सकता है:

$ sudo chown -R $USER ~/.composer/

1
थीस ने मेरे लिए संगीतकार वैश्विक संपत्ति प्लगइन की yii2 स्थापना में भी काम किया, धन्यवाद शमूएल
ज्योफ

3
'Myuser' के बजाय $ USER का उपयोग करना बेहतर विकल्प है।
zennin

2
इसने मेरे लिए समस्या को ठीक नहीं किया, अजीब है। कोई और टिप्स?
मायलॉर्ड

2
@mylord सुनिश्चित करें कि .composer आपके उपयोगकर्ता का है। के साथ चलाने की कोशिश करें~/.composer
सैमुअल मार्टिंस

6
यह एक अच्छी टिप है। हालाँकि अगर आपने पहले ही अपना प्रोजेक्ट रन सूडो चाउन -R $ USER my_project बनाया है
डैनियल

17

इसे हल करने के लिए, आपको एक टर्मिनल विंडो खोलनी चाहिए और इस कमांड को टाइप करना चाहिए:

sudo chown -R user ~/.composer( userआपके वर्तमान उपयोगकर्ता होने के साथ , आपके मामले में kramer65)

आपके द्वारा यह आदेश चलाने के बाद, आपको अपने कंपोज़र को वैश्विक आवश्यकता कमांड चलाने की अनुमति होनी चाहिए।

आपको वर्तमान निर्देशिका से .composer फ़ाइल को निकालने की आवश्यकता हो सकती है, ऐसा करने के लिए एक टर्मिनल विंडो खोलें और इस कमांड को टाइप करें:

sudo rm -rf .composer


3

मेरे मामले में, .composerरूट के स्वामित्व में था, इसलिए मैंने किया sudo rm -fr .composerऔर फिर मेरी वैश्विक आवश्यकता पर काम किया।

चेतावनी दी! यदि आप सुनिश्चित नहीं हैं कि आप क्या कर रहे हैं तो आप उस आदेश का उपयोग नहीं करना चाहते हैं।


3

मुझे इस मुद्दे का भी सामना करना पड़ा लेकिन मेरे मामले में, मैं गलत निर्देशिका में था। जिस निर्देशिका में आप काम कर रहे हैं, उसकी जाँच करें


2

मेरे मामले में मेरे पास मुद्दे नहीं हैं ~/.composer
तो लारवेल ऐप रूट फ़ोल्डर के अंदर होने के नाते, मैंने किया sudo chown -R $USER composer.lockऔर यह मददगार था।


1

यह सुपर एज केस हो सकता है, लेकिन यदि आप ट्रैविस सीआई का उपयोग कर रहे हैं और कैशिंग का लाभ उठा रहे हैं, तो आप सभी कैश को हटाना चाहते हैं और फिर से प्रयास कर सकते हैं।

जब मैं सूडो से गैर सूडो बिल्ड की ओर जा रहा था, तब मेरा मुद्दा तय किया।


0

मुझे एक ही अपवाद मिल रहा था, लेकिन मेरे मामले में मैं कमांड चलाने के लिए पॉवरशेल का उपयोग कर रहा हूं, इसलिए, मैंने इसे पहले कुछ फ़ाइलों को अनब्लॉक करने के निर्देश के साथ तय किया। PS C:\> dir C:\executable_file_Path\*PowerShell* | Unblock-File और फिर पैकेज को लोड करने के लिए निम्नलिखित का उपयोग करें & 'C:\path_to_executable\php.exe' "c:\path_to_composer_.phar_file\composer.phar "require desired/package


0

मेरे मामले में मैं sudo mkdir projectFolderफ़ोल्डर बनाने के लिए इस्तेमाल किया । यह रूट उपयोगकर्ता के स्वामित्व में था और मुझे गैर रूट उपयोगकर्ता का उपयोग करने में लॉग इन किया गया था।

इसलिए मैंने कमांड का उपयोग करके फ़ोल्डर की अनुमति को बदल दिया sudo chown mynonrootuser:mynonrootuser projectFolderऔर फिर यह ठीक काम किया।


0

मेरे लिए, उबंटू में 18.04। मुझे अंदर ही अंदर झड़ने की जरूरत थी~/.config/composer/

उदाहरण के लिए

sudo chown -R $USER ~/.config/composer

तब वैश्विक कमांड काम करते हैं।

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