সুরকার: ফাইল_পুট_কন্টেন্টস (./ composer.json): স্ট্রিমটি খুলতে ব্যর্থ হয়েছে: অনুমতি অস্বীকার করেছে


96

আমি একটি উবুন্টু 16.04 সার্ভারে প্রেস্টিসিমো ইনস্টল করার চেষ্টা করছি , তবে এটি একটি ত্রুটি বাড়ে:

$ 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 দেখুন

কোন ধারণা আমি কীভাবে এটি সমাধান করতে পারি?


4
সুস্পষ্ট হতে পারে, তবে আপনাকে অবশ্যই জিজ্ঞাসা করা উচিত ... আপনার বর্তমান অনুমতিগুলি composer.jsonকী?
দ্য জেন্টলম্যান

@ জেন্টলম্যানম্যাক্স - ~/.composer/composer.jsonএখনও কোনও ফাইল নেই।
kramer65

সুতরাং ~/.composer/ফোল্ডারে অনুমতি কি আছে ? kramer65এটি লেখার কোনও অধিকার নেই বলে মনে হয়, এটি chmodকার্যকর হতে পারে।
অ্যান্থনিবি

@ অ্যান্থনিবি - হ্যাঁ, আমি এখন দেখতে পাচ্ছি ~/.composer/মালিকানাধীন root। তবে আমি অন্য কয়েকটি সিস্টেমে সন্ধান করেছি এবং একটি নতুন নতুন উবুন্টু 16.04 ভিএম-তে সুরকার ইনস্টল করেছি এবং এটি সর্বদা মালিকানাধীন root। আমি অবশ্যই chmodবা chownএটি করতে পারি, তবে এই ডিফল্ট আচরণটি পরিবর্তন করা কি ভাল ধারণা?
kramer65

আমি কেবল আমার উবুন্টু ১.0.০৪-তে পরীক্ষা করেছি, প্রকৃতপক্ষে। কমপোজারটি মূলের সাথে মালিকানাধীন 755 মোড । সুতরাং মালিক পরিবর্তন সম্ভবত সমাধান নয়।
অ্যান্থনিবি

উত্তর:


253

ল্যারাভেল / লুমেন ইনস্টল করতে আমার এই সমস্যা ছিল।

এটি নিম্নলিখিত কমান্ড দিয়ে সমাধান করা যেতে পারে:

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

4
এটি আমার জন্য সুরকার গ্লোবাল অ্যাসেট প্লাগইন yii2 ইনস্টলেশন কাজ করেছেন ধন্যবাদ সামুয়েল
জিওফ

4
'মাইউজার' এর পরিবর্তে $ ব্যবহারকারী ব্যবহার করা আরও ভাল বিকল্প।
zennin

4
এটি আমার জন্য সমস্যাটি স্থির করেনি, আজব। অন্য কোন টিপস?
mylord

4
@ মাইলর্ড নিশ্চিত হয়ে নিন যে। কমপোজার আপনার ব্যবহারকারীর কাছ থেকে এসেছে। সাথে চালানোর চেষ্টা করুন~/.composer
স্যামুয়েল মার্টিনস

6
এটি একটি ভাল টিপ। তবে আপনি যদি ইতিমধ্যে আপনার প্রকল্পটি রান করেছেন sudo chown -R $ USER আমার_প্রজেক্ট
ড্যানিয়েল

16

এটি সমাধানের জন্য, আপনাকে একটি টার্মিনাল উইন্ডোটি খুলতে হবে এবং এই আদেশটি টাইপ করতে হবে:

sudo chown -R user ~/.composer( userআপনার বর্তমান ব্যবহারকারী হিসাবে, আপনার ক্ষেত্রে, kramer65)

আপনি এই কমান্ডটি চালানোর পরে, আপনার সুরকারকে বিশ্বব্যাপী প্রয়োজনীয় কমান্ড চালানোর অনুমতি থাকতে হবে।

টার্মিনাল উইন্ডোটি খুলতে এবং এই আদেশটি টাইপ করতে আপনার বর্তমান ডিরেক্টরি থেকে। কমপোজার ফাইলটি সরিয়ে ফেলতে হবে:

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এবং এটি ঠিকঠাক কাজ করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.