【问题标题】:"sudo composer" command works but "composer" is not?“sudo composer”命令有效,但“composer”不是?
【发布时间】:2015-05-11 17:02:33
【问题描述】:

我猜这会很容易。在我的 OS X - Yosemite 上,我已将 composer.phar 复制到我的 /usr/bin 目录中。我已经使用了一段时间,但今天我需要运行“composer update”。它当然没有用,所以我运行了“sudo composer update”。然后我收到消息“找不到命令编写器”。嗯

我根据文档将作曲家复制到/usr/local/bin,现在“sudo composer”就像魅力一样工作。但是当我在没有 sudo 的情况下运行“composer”时,它仍然使用“/usr/bin”目录中的旧版本。所以我删除了它。

现在 composer 只能使用 sudo 命令。否则我得到“无法打开输入文件:/usr/bin/composer.phar”。我应该怎么做才能将命令“composer”指向/usr/local/bin 中的新位置?

【问题讨论】:

  • 权限怎么样?做stat /usr/bin/composer.phar
  • which composer 的输出是什么?
  • which composer 输出/usr/local/bin/composer
  • 2msfoster:我在那里删除了它。现在我在 /usr/local/bin/composer 只有一位作曲家。
  • 试试sudo chmod +x composer(“composer”是你的文件)。这应该使每个人都可以访问。

标签: php terminal composer-php osx-yosemite


【解决方案1】:

获得一个不错的 composer 命令而不是 composer.phar 的另一种方法:

$ curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin
$ ln -s /usr/local/bin/composer.phar /usr/local/bin/composer

【讨论】:

    【解决方案2】:

    编辑:

    /etc/bashrc

    将此添加到该文件中:

    别名 composer="php /usr/local/bin/composer"

    运行:

    源 /etc/bashrc

    Composer 现在应该在没有 sudo 的情况下运行。

    【讨论】:

    • 这是为我做的。
    【解决方案3】:

    好的,我也遇到了必须使用 sudo 运行 composer 命令的问题,但是为了让它工作而不抛出这种错误(在 Ubuntu 15.10 中):

    [ErrorException]
    copy(/home/randomuser/.composer/cache/files/barryvdh/laravel-cors/056068736ff8f002514178e1416c7665732eaddc.zip): failed to open stream: Permission denied
    

    简单地为我解决了这个问题是:

    • 导航到我的 home 目录$ cd
    • .composer 的所有权更改为:sudo chown -R $USER:$USER .composer/
    • 那么composer install就可以顺利运行了。

    PS:其他情况可能会有所不同。

    希望这会有所帮助:)

    【讨论】:

      【解决方案4】:

      我会回答你我是如何在我的 Ubuntu 16.10 中解决它的,你可以比较你的 我的作曲家文件夹设置在

      /home/abdallah/.composer/
      

      我只给这个文件777权限,所以任何用户组都可以访问

      sudo chmod -R 777 /home/abdallah/.composer/
      

      就是这样 我希望这对你有帮助

      【讨论】:

      • 永远不要这样做!永远!
      【解决方案5】:

      从其他答案来看,似乎解决方案可能会因您的系统而异。这就是我在 Mac 10.12 上解决问题的方法。

      我在 /usr/local/bin/composer 中的 Composer 可执行文件具有与 ~/.composer/ 配置和缓存文件不同的组。

      /usr/local/bin/composer myusr admin ~/.composer/ myusr staff

      myusr 的主要组是 staff 所以我将 /usr/local/bin/composer 的组更改为 staff .

      /usr/local/bin myusr$ chgrp staff composer

      过去以 sudo 运行作曲家时创建的缓存文件仍然会导致问题,因此我删除了这些文件。 Composer 缓存文件位于此处:~/.composer/cache/

      如果在 composer update 期间为项目检查/清空项目 .composer 目录中的缓存文件更新挂起。

      【讨论】:

        猜你喜欢
        • 2017-08-24
        • 1970-01-01
        • 2017-11-20
        • 2017-02-06
        • 2017-07-03
        • 2015-10-22
        • 1970-01-01
        • 2017-03-22
        • 2020-08-16
        相关资源
        最近更新 更多