it-swarm.com.ru

Композитор: file_put_contents (./ composer.json): не удалось открыть поток: отказано в разрешении

Я пытаюсь установить Prestissimo на сервер Ubuntu 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, но composer тогда всегда говорит:

Не запускайте Composer от имени пользователя root/суперпользователя! Смотрите https://getcomposer.org/root для деталей

Любая идея, как я могу решить это?

54
kramer65

У меня была эта проблема для установки laravel/Lumen.

Я могу решить с помощью следующей команды:

$ Sudo chown -R $USER ~/.composer/
119
Samuel Martins

Чтобы решить эту проблему, вы должны открыть окно терминала и набрать эту команду:

Sudo chown -R user ~/.composeruser вашим текущим пользователем, в вашем случае kramer65)

После того, как вы запустили эту команду, у вас должно быть разрешение на запуск вашей глобальной команды require composer. 

Вам также может понадобиться удалить файл .composer из текущего каталога, чтобы сделать это, откройте окно терминала и введите следующую команду:

Sudo rm -rf .composer

9
Ken

В моем случае .composer принадлежал пользователю root, поэтому я сделал Sudo rm -fr .composer, и тогда моя глобальная потребность сработала.

Имейте в виду! Вы не хотите использовать эту команду, если вы не уверены, что делаете.

1
Nabil Kadimi

Я тоже столкнулся с этой проблемой, но в моем случае я оказался не в том каталоге. Проверьте каталог, с которым вы работаете

1
Yasin Okumuş

на вашем компьютере просто введите следующую команду в каталог, где находится docker:

chown -R 1000: 1000/var/www

/var/www может измениться, если вы храните свои проекты в другой папке.

например:

chown -R 1000: 1000/home/myuser/my_projects

0
Albert Abdonor

В моем случае у меня нет проблем с ~/.composer.
Поэтому, находясь в корневой папке приложения Laravel, я сделал Sudo chown -R $USER composer.lock, и это было полезно.

0
Tarasovych

Это может быть случай Super Edge, но если вы используете Travis CI и используете преимущества кэширования, вы можете очистить весь кэш и повторить попытку. 

Исправлена ​​ошибка, из-за которой я шел из Sudo в другие сборки.

0
Moak