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

hah*_*ute 19 php linux permissions composer-php

我按照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 
Run Code Online (Sandbox Code Playgroud)

权限/usr/local/bin/(我将它们更改为777,但没有帮助):

-rwxrwxrwx  1 hannes users 1104202 30. Mai 18:07 composer
Run Code Online (Sandbox Code Playgroud)

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

sudo chmod -R 777 .composer/
Run Code Online (Sandbox Code Playgroud)

/etc/php/php.ini,open_basedir看起来如此:

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/usr/local/bin/
Run Code Online (Sandbox Code Playgroud)

我也试过sudo composer self-update但它没有用,可能不是正确的方法.(?).还有什么我可以尝试使这项工作?

Raa*_*ghu 19

如果您composer.phar直接下载,可能就是这种情况,

但不是通过跑步 php composer-setup.php

使composer.phar可执行文件将它移动到之前下面的命令/usr/local/bin/composer或移动后

sudo chmod 755 composer.phar

composer-setup.php默认会为我们进行此更改


小智 16

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

使用sudo"你的命令"

  • 避免在 Composer 中使用 sudo。https://getcomposer.org/doc/faqs/how-to-install-untrusted-packages-safely.md (4认同)
  • 这可能是大锤的方法。 (3认同)

ark*_*cha 13

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

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

根据您在上一条评论中发布的行,该目录目前只能为root用户自己编写.这可以解释你得到的错误.你应该不会让自己的用户帐户的所有者,Linux系统是多用户环境.而是考虑以下方法之一:

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

最后一个选项是通常选择和首选的选项.它保留了权限(保守),只使用提升权限进行安装和升级等系统维护工作.

  • 我该如何执行您在项目符号中描述的步骤?Linux 命令不是我的专长 (2认同)

Bos*_*IGA 10

在Ubuntu SRV 16.04上

第一

sudo rm /usr/local/bin/composer
Run Code Online (Sandbox Code Playgroud)

cd ~/.cache/composer
chmod 755 composer-temp.phar
sudo mv composer-temp.phar /usr/local/bin/composer
Run Code Online (Sandbox Code Playgroud)

  • cd〜/ .cache / composer应该是cd〜/ .composer / cache (4认同)
  • `~/.cache/composer` 或 `~/.composer/cache` 取决于 composer 的安装方式。在我的安装中,位置是`~/.cache/composer` 我像这样安装作曲家:`curl -sS https://getcomposer.org/installer | php` (2认同)
  • 难道不应该是“sudo cp ...”来始终保留临时副本吗? (2认同)

hah*_*ute 2

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

sudo pacman -S composer
Run Code Online (Sandbox Code Playgroud)