2016-12-18 3 views
15

Я пытаюсь установить Prestissimo на 16,04 сервере Ubuntu, но это приводит к ошибке:Композитор: file_put_contents (./ composer.json): не удалось открыть поток: Отказано в

$ 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>]... 

Я m зарегистрировался как пользователь kramer65, поэтому я не знаю, почему он не может писать в мою домашнюю папку. Моя нормальная реакция на permission denied является использование sudo, но композитор, то всегда говорит:

Do not run Composer as root/super user! See https://getcomposer.org/root for details

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

+0

Может быть очевидным, но его нужно спросить ... каковы текущие разрешения на ваш 'composer.json'? – GentlemanMax

+0

@GentlemanMax - Файл '~/.composer/composer.json' еще не существует. – kramer65

+0

Итак, каковы разрешения на папку '~/.composer /'? 'kramer65' не имеет права писать, кажется, что' chmod' может быть полезным. – AnthonyB

ответ

53

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

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

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

Это тоже работало для меня в yii2. Установка плагина для глобального плагина композитора. Спасибо samuel. –

+0

Использование USER вместо «myuser» - лучший вариант. – zennin

+0

Это не проблема для меня, странно. Любые другие советы? – mylord

1

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

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

6

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

sudo chown -R user ~/.composeruser быть вашим текущим пользователем, в вашем case, kramer65)

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

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

sudo rm -rf .composer

0

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

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^