Композитор: 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 как root/super user! Подробнее см. https://getcomposer.org/root

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

sudo chown -R user ~/.composer (при этом user является вашим текущим пользователем, в вашем случае kramer65)

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

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

sudo rm -rf .composer

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Исправлена ​​проблема, когда я отправлялся из sudo в сборки non sudo.

Ответ 6

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

Ответ 7

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

chown -R 1000: 1000/var/www

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

например:

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