我正在尝试将 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
,但作曲家总是说:
不要以 root/超级用户身份运行 Composer!有关详细信息,请参阅 https://getcomposer.org/root
知道如何解决这个问题吗?
composer.json
的当前权限是什么?
~/.composer/composer.json
文件。
~/.composer/
文件夹的权限是什么? kramer65
似乎无权编写,chmod
可能有用。
~/.composer/
归 root
所有。但我刚刚检查了一些其他系统并在全新的 Ubuntu 16.04 VM 上安装了 composer,它始终归 root
所有。我当然可以 chmod
或 chown
它,但是更改此默认行为是个好主意吗?
我在安装 laravel/lumen 时遇到了这个问题。
可以使用以下命令解决:
$ sudo chown -R $USER ~/.composer/
要解决这个问题,您应该打开一个终端窗口并输入以下命令:
sudo chown -R user ~/.composer
(user
是您的当前用户,在您的情况下是 kramer65
)
运行此命令后,您应该有权运行您的 composer global require 命令。
您可能还需要从当前目录中删除 .composer 文件,为此打开一个终端窗口并键入以下命令:
sudo rm -rf .composer
对我来说,在 Ubuntu 18.04 中。我需要在 ~/.config/composer/
例如
sudo chown -R $USER ~/.config/composer
然后全局命令起作用。
就我而言,~/.composer
没有问题。
因此,在 Laravel 应用程序根文件夹中,我做了 sudo chown -R $USER composer.lock
,这很有帮助。
在我的情况下,.composer
归 root 所有,所以我做了 sudo rm -fr .composer
,然后我的全局要求工作了。
被警告!如果您不确定自己在做什么,则不想使用该命令。
我也遇到了这个问题,但就我而言,我在错误的目录中。检查您正在工作的目录
在我的情况下,所有权限在此处其他答案中提到的所有位置都是正确的,但我仍然收到此错误。
原来有一些供应商目录归根用户所有。 Composer 在进行更新或安装时会写入composer.lock
个文件到处。
所以解决了我的问题 - 这是专门针对 laravel 帆容器的 - 所有所有权都已切换到项目中的用户 sail
:
以 root 身份输入 sail
容器:
vendor/bin/sail root-shell
设置项目中所有文件的文件所有权:
chown -R sail:sail /var/www/html
您可能只想在第一次尝试时创建供应商目录:
chown -R sail:sail /var/www/html/vendor
从手动 docker-compose.yaml
设置切换到 Laravel Sail 后,所有权出现了错误,IMO 以合理的方式处理文件所有权和权限,将 root
与应用程序用户 sail
分开。
这可能是超级边缘情况,但如果您使用 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
更改了文件夹权限,然后它工作正常。
将它与 WSL Windows 10 一起使用时,我遇到了同样的错误。我使用以下命令来解决它:-
sudo chown -R $USER /home/<username>/.config/composer
我在已安装的 Windows 版本的作曲家中遇到了同样的问题
C:\作曲家
当我尝试这个命令时
C:\composer 需要 aws/aws-sdk-php
然后我进入作曲家安装的文件夹并再试一次
C:\composer>composer 需要 aws/aws-sdk-php
包安装很快。
不定期副业成功案例分享
~/.composer
运行