昨天我刚刚在我的VM Ubuntu 15.10上安装了带有Behat的Laravel。一切正常,运行命令$ 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
请注意,对于doctrine
phpspec
等vendor/bin
中的文件,问题是一样的。
您遇到了相对路径问题。如果您的当前目录包含 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
存在于第二条路径中(
执行behat
时,您需要在vendor/bin/
内部:
$ cd $HOME/project/vendor/bin
$ behat
...
但是,我不认为这是最新behat
安装的问题,第 #1 行是一个格式良好的 shebang。我认为您可能想销毁vendor
安装,更新作曲家等,然后重新安装Behat。这些文件不应以相对路径开头。
编辑:
根据作曲家文档,它创建了指向包二进制文件的符号链接,如源代码所示。您可以通过运行ls -l vendor/bin
来验证这一点(所有符号链接都有一个指向其目标路径的->
(。看来你原来的php composer.phar require ...
从一开始就是腐败的。