2016-12-18 96 views
15

我试图安装Prestissimo到一个Ubuntu 16.04服务器,但导致的错误:作曲: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>]... 

我以用户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 /流明。

我可以用下面的命令解析:

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

这也为我在yii2作曲家全球资产插件安装感谢samuel –

+0

使用$ USER而不是'myuser'是更好的选择。 – zennin

+0

它并没有解决我的问题,奇怪。任何其他提示? – mylord

1

在我的情况下,.composer归根,所以我做了sudo rm -fr .composer,然后我的全局需求工作。

被警告!如果你不确定你在做什么,你不想使用该命令。

6

要解决这个问题,你应该打开一个终端窗口,输入以下命令:

sudo chown -R user ~/.composer(与user是当前用户,在您的case,kramer65

运行此命令后,您应该拥有运行composer global require命令的权限。

您可能还需要从当前目录中删除.composer文件,要做到这一点打开一个终端窗口,输入以下命令:

sudo rm -rf .composer

0

这可能是超级边缘的情况下,但如果您正在使用Travis CI并利用缓存,您可能需要清除所有缓存并重试。

解决了我从sudo到非sudo版本的问题。

0

我也面临这个问题,但在我的情况下,我在错误的目录。检查你正在工作的目录

相关问题