在Ubuntu终端上未检测到composer vendor / bin文件

时间:2016-02-10 21:06:39

标签: php bash ubuntu composer-php behat

昨天我刚刚在我的VM Ubuntu 15.10上安装了Laravel和Behat。 一切正常,运行命令$ vendor/bin/behat --init成功创建了features/文件夹

但今天运行$ vendor/bin/behat时,有些奇怪,vendor/bin/behat: line 1: ../behat/behat/bin/behat: No such file or directory

vendor/bin/behat文件中有什么内容? 第一行../behat/behat/bin/behat

访问实际位置有效$ vendor/behat/behat/bin/behat,这基本上意味着file DOES exists

请注意,vendor/bin中的文件问题与doctrine phpspec等问题相同。

1 个答案:

答案 0 :(得分:1)

你有相对的路径问题。如果当前目录包含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(注意vendor存在于第二条路径中)

执行vendor/bin/时,您需要在behat内:

$ cd $HOME/project/vendor/bin
$ behat
...

但是,我不认为这是最新behat安装的问题,line #1是一个结构良好的shebang。我想你可能想破坏你的vendor安装,更新作曲家等,以及reinstall Behat。这些文件不应以相对路径开头。

修改

根据作曲家文档,它是creates symlinks to package binaries,如source code中所示。您可以通过运行ls -l vendor/bin来验证这一点(所有符号链接都会指向其目标路径->)。看起来你的原始php composer.phar require ...从一开始就是腐败的。