编程语言
首页 > 编程语言> > php – 为什么COMPOSER_HOME为空?

php – 为什么COMPOSER_HOME为空?

作者:互联网

我有一个关于编程工具composer的问题,它在/usr/local/bin / composer中作为可执行文件安装在我在工作和家庭之间使用的3台不同的机器上.根据:

composer help global

06001

但这两个都是空的:

echo $COMPOSER_HOME
echo $COMPOSER_BIN_DIR

当我跑:

composer global require <package>

它仅在我的Ubuntu 16.04桌面上安装到/home/\u0026lt;user\u0026gt;/.config/composer/vendor/bin,但在其他任何地方都安装到/home/\u0026lt;user\u0026gt;/.composer/vendor/bin

为什么安装到〜/ .config而不是〜/ .composer并且没有设置COMPOSER_HOME变量?

我注意到这一点是因为我提供了包含全局作曲家bin路径的常见dotfiles.我知道我可以通过在我的bashrc中手动设置COMPOSER_HOME来解决这个问题,但我宁愿理解为什么会发生这种情况.

解决方法:

source code揭示了如何计算Composer主目录的额外复杂性.

如果您的系统使用freedesktop.org标准,它通过查找environment variables beginning with XDG_检测到,那么Composer使用$XDG_CONFIG_HOME / composer /,如果没有设置,则回退到$HOME / .config / composer /.

您可能有兴趣看到有一个special case:if $HOME / .composer / exists是一个目录,它将用于支持freedesktop.org逻辑.据推测,这是为了向后兼容.如果手动创建此目录,Composer应该使用它.

我不确定为什么这只会影响你的Ubuntu 16.04机器.运行Ubuntu 14.04变体的旧笔记本电脑使用XDG_环境变量.

我怀疑你是在freedesktop.org逻辑was added in July of 2015之后第一次在该机器上安装了Composer,并且之前你的其他机器都安装了Composer.然后他们现有的〜/ .composer /目录将确保Composer继续使用该位置.

标签:php,bash,composer-php,ubuntu-16-04
来源: https://codeday.me/bug/20190724/1524699.html