Php Ubuntu终端上未检测到composer供应商/bin文件
昨天我刚刚在我的VM Ubuntu 15.10上安装了带有Behat的Laravel。 一切正常,运行命令Php Ubuntu终端上未检测到composer供应商/bin文件,php,bash,ubuntu,composer-php,behat,Php,Bash,Ubuntu,Composer Php,Behat,昨天我刚刚在我的VM Ubuntu 15.10上安装了带有Behat的Laravel。 一切正常,运行命令$vendor/bin/behat--init成功创建了features/文件夹 但是今天有些奇怪,当运行$vendor/bin/behat时,它说vendor/bin/behat:line 1:../behat/behat/bin/behat:没有这样的文件或目录 供应商/bin/behat文件中有什么? 第一行。/behat/behat/bin/behat 访问实际位置可以使用$vend
$vendor/bin/behat--init
成功创建了features/
文件夹
但是今天有些奇怪,当运行$vendor/bin/behat
时,它说vendor/bin/behat:line 1:../behat/behat/bin/behat:没有这样的文件或目录
供应商/bin/behat
文件中有什么?
第一行。/behat/behat/bin/behat
访问实际位置可以使用$vendor/behat/behat/bin/behat
,这基本上意味着文件确实存在
请注意,对于
供应商/bin
中的文件,如条令
phpspec
等,问题是相同的。您遇到了相对路径问题。如果当前目录包含vendor/
,并且您执行vendor/bin/behat
,则。/behat/behat/bin/behat
不存在,因为它将从当前目录向上移动一个目录,而不是vendor/bin/
。例如:
$ cd $HOME/project
$ vendor/bin/behat
vendor/bin/behat: line 1: ../behat/behat/bin/behat: No such file or directory
该相对路径变为$HOME/project/behat/behat/bin/behat
,而不是$HOME/project/vendor/behat/behat/bin/behat
(注意第二条路径中存在供应商
)
执行行为时,您需要在供应商/bin/
内:
$ cd $HOME/project/vendor/bin
$ behat
...
然而,我不认为这是最新的behat
install的问题,它是一个结构良好的shebang。我想你可能想毁掉你的供应商
安装、更新composer等等。这些文件不应以相对路径开头
编辑:
根据composer文档,如图所示。您可以通过运行ls-l vendor/bin
(所有符号链接都将有一个->
指向其目标路径)来验证这一点。看起来您原来的php composer.phar require…
从一开始就已损坏。是的,实际上我通过删除供应商文件夹和composer.lock,然后再次发布composer安装解决了问题。有趣的是,vendor/bin/*中的文件不包含相对路径,而是它们所指向的实际代码。例如,Vendor/bin/behat与Vendor/behat/behat/bin/behat的内容相同。有什么想法吗?@Daskul-根据作曲家的记录,是的。您可以通过运行ls-l vendor/bin
(所有符号链接都将有一个->
指向其目标路径)来验证这一点。看起来您原来的php composer.phar require…
从一开始就已损坏。如果您感到好奇,下面是composer安装二进制文件中的内容。我明白了。你能把它加到你的答案上吗?这样我就可以接受了