不使用 sudo 运行 Composer(尝试更改所有者和权限)

不使用 sudo 运行 Composer(尝试更改所有者和权限)

每次我运行 composer(例如sudo composer install, sudo composer self-update等等)时,我都需要使用 sudo 运行它,因为文件的所有者是 root。

但是每次我使用带有 sudo root 的作曲家时,供应商文件夹都归我所有,然后我必须将该文件夹的所有者/权限从 root 更改为 www-data。

解决这个问题的最佳方法是什么,以便我不必每次都运行 sudo?

将 的所有者/usr/local/bin/composer从 root 更改为 www-data?

这是处理此问题的理想方法吗,以避免每次使用 sudo 时都必须更改所有权并分配权限composer install

编辑: Composer 的权限目前为。我尝试将-rwxr-xr-x的所有者切换为 并将权限设置为 775,但如果不运行 ,我仍然无法运行 Composer 。/usr/local/bin/composerwww-data:www-datasudo

答案1

如果允许“每个人”读取和执行 composer,则不需要使用 sudo:

sudo chmod 755 /var/local/bin/composer

由于您已至少执行过一次 composer root,因此 composers(每个用户)缓存目录现在归 root 所有,因此普通用户无法写入。

sudo chown -R lamp:lamp /home/lamp/.composer

将修复文件所有者。

答案2

我发现这个命令对于以 www-data 形式运行 composer 很有用:

sudo su -l www-data -s /bin/bash -c "cd $PWD; composer install"

参考:https://commandroll.com/command/run-command-as-www-data-using-su

答案3

我已经处理这个问题好几个星期了。

我认为解决方案是使用 -H 运行 Composer 自我更新

sudo -H composer self-update

在执行此操作之前,请务必删除根目录中的 .composer 目录以及您希望执行 Composer 的用户的主目录。

sudo rm -rf /root/.composer
sudo rm -rf /home/ubuntu/.composer

运行不带 -H 标志的 sudo composer self-update 将创建由 root 拥有的 ~/.composer,并将阻止其他 composer 命令出现权限错误。

composer config
composer install 

在我看来,调用 sudo composer self-update 不应该在当前用户主目录中创建 root 拥有的文件。

请注意,如果您按照 Ubuntu 14.04 上的这些说明操作,Composer 将把缓存放置在:

 ~/.cache/composer

而不是:

~/.composer/cache

这是因为 XDG_RUNTIME_DIR 环境变量在 Ubuntu 14.04 中定义,但似乎没有在 Ubuntu 12.04 中定义

相关讨论在这里

相关内容