Я пытаюсь установить 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
, поэтому я не знаю, почему он не может писать в мою домашнюю папку. Моя обычная реакция на a permission denied
- использовать sudo
, но тогда композитор всегда говорит:
Не запускайте Composer от имени root / суперпользователя! См https://getcomposer.org/root подробности
Есть идеи, как я могу это решить?
composer.json
?~/.composer/composer.json
еще нет.~/.composer/
папки?kramer65
не имеет права писать вродеchmod
бы может пригодиться.~/.composer/
он принадлежитroot
. Но я только что проверил некоторые другие системы и установил composer на новую виртуальную машину Ubuntu 16.04, и она всегда принадлежитroot
. Я могу, конечно,chmod
илиchown
нет, но стоит ли менять это поведение по умолчанию?755
режимом. Так что смена владельца, вероятно, не решение.Ответы:
У меня возникла проблема с установкой laravel / lumen.
Это можно решить с помощью следующей команды:
источник
~/.composer
Чтобы решить эту проблему, вы должны открыть окно терминала и ввести эту команду:
sudo chown -R user ~/.composer
(user
в вашем случае, будучи вашим текущим пользователемkramer65
)После того, как вы выполнили эту команду, у вас должно быть разрешение на запуск команды composer global require.
Вам также может потребоваться удалить файл .composer из текущего каталога, для этого откройте окно терминала и введите следующую команду:
sudo rm -rf .composer
источник
В моем случае
.composer
владельцем был root, поэтому я это сделал,sudo rm -fr .composer
и тогда мои глобальные требования сработали.Имейте в виду! Вы не хотите использовать эту команду, если не уверены, что делаете.
источник
Я тоже столкнулся с этой проблемой, но в моем случае я был не в том каталоге. Проверьте каталог, в котором вы работаете
источник
В моем случае проблем с
~/.composer
.Так что, находясь внутри корневой папки приложения Laravel, я это сделал,
sudo chown -R $USER composer.lock
и это было полезно.источник
Это может быть крайний случай, но если вы используете Travis CI и пользуетесь преимуществами кеширования, вы можете очистить весь кеш и повторить попытку.
Исправлена моя проблема, когда я переходил от сборки sudo к сборке без sudo.
источник
У меня было то же исключение, но в моем случае я использую PowerShell для выполнения команд. Итак, я исправил это с помощью инструкции, чтобы сначала разблокировать несколько файлов.
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
источник
В моем случае я
sudo mkdir projectFolder
создавал папку. Он принадлежал пользователю root, и я вошел в систему под пользователем без полномочий root.Поэтому я изменил разрешение папки с помощью команды,
sudo chown mynonrootuser:mynonrootuser projectFolder
и тогда все заработало.источник