kra*_*r65 65 php linux sudo laravel composer-php
我正在尝试将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>]...
Run Code Online (Sandbox Code Playgroud)
我以用户身份登录kramer65,因此我不知道为什么它无法写入我的主文件夹.我对a的正常反应permission denied是使用sudo,但作曲家总是说:
不要以root /超级用户身份运行Composer!有关详细信息,请参阅https://getcomposer.org/root
知道如何解决这个问题吗?
Sam*_*ins 174
我有这个问题来安装laravel/lumen.
我可以使用以下命令解决:
$ sudo chown -R $USER ~/.composer/
Run Code Online (Sandbox Code Playgroud)
Ken*_*Ken 11
要解决此问题,您应该打开一个终端窗口并键入以下命令:
sudo chown -R user ~/.composer(user作为您当前的用户,在您的情况下,kramer65)
运行此命令后,您应该有权运行composer global require命令.
您可能还需要从当前目录中删除.composer文件,为此打开终端窗口并键入以下命令:
sudo rm -rf .composer
对我来说,在 Ubuntu 18.04 中。我需要在里面 chown~/.config/composer/
例如
sudo chown -R $USER ~/.config/composer
Run Code Online (Sandbox Code Playgroud)
然后全局命令起作用。
就我而言,我没有问题~/.composer。
所以在 Laravel 应用程序根文件夹中,我做到了sudo chown -R $USER composer.lock,这很有帮助。
就我而言,此处其他答案中提到的所有位置的所有权限都是正确的,但我仍然收到此错误。
结果发现有一些供应商目录是 root 拥有的。Composer在进行更新或安装时会在各处composer.lock写入文件。
因此,解决我的案例 - 这是专门针对 laravel sail 容器的 - 所有所有权都已切换到sail项目中的用户:
sail以 root 身份进入容器:
vendor/bin/sail root-shell
Run Code Online (Sandbox Code Playgroud)
设置项目中所有文件的文件所有权:
chown -R sail:sail /var/www/html
Run Code Online (Sandbox Code Playgroud)
您可能只想将供应商目录作为第一次尝试:
chown -R sail:sail /var/www/html/vendor
Run Code Online (Sandbox Code Playgroud)
从手动设置切换docker-compose.yaml到 Laravel Sail 后,所有权是错误的,IMO 以合理的方式处理文件所有权和权限,root与应用程序用户分离sail。