【问题标题】:Cannot install "global" composer requirements because "composer.json is not writeable"无法安装“全局”作曲家要求,因为“composer.json 不可写”
【发布时间】:2021-06-01 23:55:27
【问题描述】:

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

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

我试图通过

制作可写的composer.json
$chmod 777 ./composer.json 

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

【问题讨论】:

  • 澄清一下,./composer.json 指的是/home/rukon/.config/composer/composer.json 对吧?
  • 您尝试过什么调试问题?您可以分享该文件的当前权限吗?

标签: php composer-php


【解决方案1】:

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

看起来您的 home 目录作曲家归 root 所有。

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

要找出你的作曲家的主目录在哪里,你应该运行这个(如here所示):

composer config --list --global | grep home

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

所以你需要运行:

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

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

之后你应该可以运行composer global 命令了。

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

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

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

【讨论】:

  • rukon@rukon-HP-Notebook:~$ sudo chown -R $USER: ~/.composer [sudo] rukon 密码: chown: 无法访问'/home/rukon/.composer':没有这样的文件或目录 rukon@rukon-HP-Notebook:~$ 它正在显示这个。
  • rukon@rukon-HP-Notebook:~$ composer config --list --global | grep home [vendor-dir] 供应商 (/home/rukon/vendor) [bin-dir] {$vendor-dir}/bin (/home/rukon/vendor/bin) [cache-dir] /home/rukon/. cache/composer [data-dir] /home/rukon/.local/share/composer [cache-files-dir] {$cache-dir}/files (/home/rukon/.cache/composer/files) [cache- repo-dir] {$cache-dir}/repo (/home/rukon/.cache/composer/repo) [cache-vcs-dir] {$cache-dir}/vcs (/home/rukon/.cache/composer /vcs) [home] /home/rukon/.config/composer 显示这个
  • rukon@rukon-HP-Notebook:~$ sudo chown -R $user ~/ [sudo] rukon 的密码:chown: '/home/rukon/' 后缺少操作数 试试 'chown --帮助'了解更多信息。 rukon@rukon-HP-Notebook:~$ 给出这个命令后我也尝试安装 laravel 但缓存文件夹有问题
  • 安装失败,正在将 ./composer.json 和 ./composer.lock 还原为其原始内容。 [ErrorException] 复制(/home/rukon/.cache/composer/files/laravel/installer/62491603ec89eb9d8c fec6fdc1ee7d3ae2ffce42.zip):无法打开流:权限被拒绝在给出命令时显示此错误 $composer global require laravel/installer
  • 您的主目录权限已损坏。尝试使用上面的解决方案和链接的答案来修复您的主目录权限。并且以后尽量不要以root身份运行composer。
猜你喜欢
  • 2015-02-17
  • 2017-04-07
  • 2019-08-03
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
  • 2017-08-13
  • 2014-10-12
  • 1970-01-01
相关资源
最近更新 更多