首页 > 解决方案 > 无法安装“全局”作曲家要求,因为“composer.json 不可写”

问题描述

我想安装 Laravel 但我一次又一次收到以下错误,

rukon@rukon-HP-Notebook:~$ composer global require laravel/installer 将当前目录更改为 /home/rukon/.config/composer ./composer.json 不可写。rukon@rukon-HP-笔记本:~$

我试图通过

$chmod 777 ./composer.json 

但它不起作用。我的文件所有者不是 root

标签: phpcomposer-php

解决方案


当您运行任何composer global命令时,composer.json使用的是您的 HOME 目录中的命令,而不是您的项目目录中的命令。例如在~/.composer/composer.json

看起来您的目录作曲家归根用户所有。

在某些时候,您已经composer使用 root 执行并搞砸了您的安装。

要找出你的作曲家的主目录在哪里,你应该运行它(如此处所示

composer config --list --global | grep home

例如,鉴于您的输出,您的主目录似乎位于“/home/rukon/.config/composer”:

所以你需要运行:

sudo chown -R $USER: ~/.config/composer

修复您的“全局”作曲家配置目录。

之后您应该能够运行composer global命令。

如果你有更多的权限问题,你最好修复你的主目录,这样那里的所有东西都归你的用户所有,root 没有任何东西,如下所示

sudo find ~ -type d -user root -exec sudo chown -R $USER: {} +

对于常规安装,上述内容应该是安全的(您的主目录中的所有文件都属于您自己的用户),但如果您有什么特别之处,您可能应该意识到并采取更手术的方法(检查每个目录)。


推荐阅读