/usr/local/bin/ 中作曲家的权限被拒绝

Posted

技术标签:

【中文标题】/usr/local/bin/ 中作曲家的权限被拒绝【英文标题】:permission denied for composer in /usr/local/bin/ 【发布时间】:2015-09-06 12:22:50 【问题描述】:

我按照https://getcomposer.org/doc/00-intro.md#globally 上的文档在arch linux 上全局安装composer。当我执行composer self-update 时,我会收到以下消息:

  [ErrorException]                                                                                    
  rename(/home/hannes/.composer/cache/composer-temp.phar,/usr/local/bin/composer): Permission denied 

/usr/local/bin/ 中的权限(我改成 777,但没有用):

-rwxrwxrwx  1 hannes users 1104202 30. Mai 18:07 composer

在我的主目录中,我这样做了:

sudo chmod -R 777 .composer/

/etc/php/php.ini 中,open_basedir 看起来是这样的:

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/usr/local/bin/

我也尝试过sudo composer self-update,但效果不佳,可能不是正确的方法。 (?)。我还能尝试什么来完成这项工作?

【问题讨论】:

你应该检查目录/usr/local/bin/的权限,而不是里面的文件。该过程必须写入必须授予的目录。除此之外,还有一个提示:不要总是将所有内容都设置为 777。没有理由这样做,这会使您的系统易受攻击。 好的,我应该为我的用户(我)chown 目录/usr/local/bin 吗?看起来像这样:drwxr-xr-x 2 root root 4096 30. Mai 18:08 bin 看起来它应该只由 root 拥有,而不是用户.. (?) 我没有在此处开始评论流程,而是在下面发布了答案。 【参考方案1】:

对于那些使用共享服务器的人,这里是步骤。

我们先下载composer文件。

cd ~ curl -sS https://getcomposer.org/installer | php

现在我们可以通过以下方式访问 composer:

~/composer.phar

假设您在根目录中有/public_html,以下是使用最新作曲家的步骤。

cd public_html ~/composer.phar update

以后,如果你想更新作曲家:

~/composer.phar self-update

希望这有帮助。

【讨论】:

【参考方案2】:

如果权限被拒绝,您应该使用带有 sudo 的命令,例如:

sudo composer self-update

【讨论】:

永远不要在作曲​​家命令中使用 sudo。【参考方案3】:

确保作曲家已经在/usr/local/bin,然后做以下事情

chmod 755 composer

如果权限被拒绝,添加sudo

【讨论】:

【参考方案4】:

在 Ubuntu 服务器上 >= 16.04

第一

sudo rm /usr/local/bin/composer

cd ~/.cache/composer
chmod 755 composer-temp.phar
sudo mv composer-temp.phar /usr/local/bin/composer

【讨论】:

cd ~/.cache/composer 应该是cd ~/.composer/cache 这在 Amazon ec2 实例中对我有用。当然,您必须按照 Oliver Tappin 的建议进行更改。 ~/.cache/composer~/.composer/cache 取决于 composer 的安装方式。在我的安装中,位置是~/.cache/composer 我这样安装作曲家:curl -sS https://getcomposer.org/installer | php 这是我的首选答案。您不必更改权限或任何东西。 不应该是sudo cp ... 一直保留一个临时副本吗?【参考方案5】:

您可以暂时将权限添加到您的工作用户,然后在没有错误的情况下更新作曲家,然后取回权限。

sudo chmod 777 /usr/bin/
composer self-update
sudo chmod 755 /usr/bin/

【讨论】:

【参考方案6】:

如果你直接下载了composer.phar,可能会出现这种情况,

但不是通过运行php composer-setup.php

在将composer.phar 移动到/usr/local/bin/composer 之前或在移动之后使用以下命令使composer.phar 可执行

sudo chmod 755 composer.phar

composer-setup.php 默认会为我们做这个改变

【讨论】:

我这样做了,它对我有用。在进入 /usr/local/bin 或只是重新安装 composer 之前不确定它是否正在执行 chmod。没有意义,因为它已经拥有正确的权限,但它现在可以正常工作。 我可以知道 /usa/local/bin @Raaghu 的路径在哪里 @Gem 这是linux操作系统中的目录路径。 @Raaghu 如何在windows平台上运行我正在使用composer。 @Gem 只需右键单击 cmd 控制台,然后单击“以管理员身份运行”。然后您可以运行自我更新命令。这有点像在 Linux 中运行“sudo”。【参考方案7】:

这在 Centos 7 上为我完成了这项工作

chown -R apache:apache path/to/composer
chmod 755 path/to/composer

【讨论】:

您能否解释一下它是如何澄清您的答案的?提前致谢! 第一个命令将 apache 指定为文件夹的所有者。第二条命令使文件夹对用户和组“可读、可写、可执行”,对其他文件夹“可读、可执行”。【参考方案8】:

即使在通过sudo mv composer.phar /usr/local/bin/composer 移动文件后,我在尝试运行composer 命令时仍遇到权限错误。 sudo chmod 755 /usr/local/bin/composer 为我解决了问题。

【讨论】:

【参考方案9】:

现在,arch linux 中有一个适合我的作曲家包:

sudo pacman -S composer

【讨论】:

【参考方案10】:

对写入文件夹根文件的任何命令使用 sudo 命令。它对我有用。

使用 sudo "你的命令"

【讨论】:

这可能是大锤的方法。 避免在作曲家中使用 sudo。 getcomposer.org/doc/faqs/… 您不应以 root/超级用户身份运行 Composer。详情请见getcomposer.org/root。【参考方案11】:

您应该检查目录 /usr/local/bin/ 的权限,而不仅仅是其中的文件。该过程必须将文件和目录都写入必须授予的目录。

除此之外,一般提示:不要总是将所有内容都设置为 777。没有理由这样做,这会使您的系统易受攻击。

根据您在最后一条评论中发布的行,该目录当前可供 root 用户本人写入。这将解释你得到的错误。您应该将自己的用户帐户设为所有者,Linux 系统是多用户环境。而是考虑以下方法之一:

将用于执行composer 的帐户添加到组root(一个用户帐户可以属于多个组)并使目录组可写 将目录的组所有权更改为帐户所属的组并使目录组可写 使用sudo 实用程序安装和更新composer 实用程序

最后一个选项是通常选择和首选的选项。它保留权限(保守),仅将提升的权限用于安装和升级等系统维护工作。

【讨论】:

如何执行您在项目符号中描述的步骤? Linux 命令不是我的专长 1.找到你的用户 [whoami] 2. 将用户添加到根组 [sudo adduser yourusername root] 3. 重启终端

以上是关于/usr/local/bin/ 中作曲家的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

bash: /usr/local/bin/composer.phar 没有这种类型的文件或文件夹(ubuntu 16.04)

错误:EACCES:权限被拒绝,取消链接 '/usr/local/bin/npm

AWS EC2 权限被拒绝 /usr/local/bin cURL

在redhat5安装7z报错 提示权限不够

Jekyll 安装权限问题 ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/jeky

作曲家使用较新版本的php