微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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继续使用该位置.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐