作曲家:file_put_contents(./composer.json):无法打开流:权限被拒绝

新手上路,请多包涵

我正在尝试将 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

知道如何解决这个问题吗?

原文由 kramer65 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 678
2 个回答

我在安装 laravel/lumen 时遇到了这个问题。

可以使用以下命令解决:

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

原文由 Samuel Martins 发布,翻译遵循 CC BY-SA 4.0 许可协议

在我的情况下,所有权限在此处其他答案中提到的所有位置都是正确的,但我仍然收到此错误。

原来有一些供应商目录归根用户所有。 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

原文由 Jason 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题