File_put_contents(./composer.lock): 无法打开流:权限被拒绝

File_put_contents(./composer.lock): Failed to open stream: Permission denied

我是 Ubuntu 的新手,我正在尝试获取我的 Ubuntu 网络服务器 运行ning,但我遇到了 composer 问题。当我 运行 composer install 它输出这个错误 [ErrorException] file_put_contents(./composer.lock): Failed to open stream: Permission denied。 我在网上找到了解决方法,但对我不起作用

无效解决方案:

 sudo chown -R $USER ~/.composer/

输出

chown: cannot access '/home/admin/.composer/': No such file or directory

我正在使用 Ubuntu 20.04。有谁知道我该怎么办?

composer install 正在尝试在您的项目目录中创建一个 .composer.lock 文件,因此 php 应该有权这样做。

一个快速的破解方法是使用 sudo composer install但这不是推荐的方法

这也应该有效

sudo chown -R :www-data /fullpath-to-your-project

这个问题可以通过创建锁文件然后修改所有权轻松解决。

  1. sudo touch composer.lock

  2. sudo chown -R $USER ./composer.lock

  3. composer update

仅拥有项目文件夹:

sudo chown -R $USER path/to/project/folder

有了这个,你就不用再用sudo到运行composer update

运行 sudo chown -R $USER ~/.composer/ 将不起作用,因为在 Laravel 结构中确实没有 file/folder 称为 'composer',而是 'composer.lock'。 相反,运行ning sudo chown $USER composer.lock 会更有意义(将 $USER 替换为您的实际用户名)。 然而,这并不能完全解决问题。

也就是说,您应该执行以下操作以确保 composer install(或 composer update)运行 成功:我假设您的项目路径是 /var/www/html/your-project。

  1. 更改 Laravel 项目文件夹的所有权: sudo chown -R www-data.www-data /var/www/html/your-project

  2. 更改 Laravel 项目文件夹的权限:sudo chmod -R 755 /var/www/html/your-project

  3. 使存储文件夹可写:sudo chmod -R 777 /var/www/html/your-project/storage

  4. 然后确保将当前用户添加到 www-data 组:sudo usermod $USER -g www-data(将 $USER 替换为您的用户名)

现在您应该可以 运行 composer installcomposer update 而不会出现权限错误。