/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
Jekyll 安装权限问题 ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/jeky