php - 在 Ubuntu 终端上未检测到 Composer 供应商/bin 文件

标签 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: No such file or directoryvendor/bin/behat 里面有什么文件?
这第一行 ../behat/behat/bin/behat
访问实际位置作品$ vendor/behat/behat/bin/behat这基本上意味着 file DOES exists
请注意,vendor/bin 中的文件的问题是相同的。喜欢 doctrine phpspec ETC..

最佳答案

你有相对路径问题。如果您的当前目录包含 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安装、更新 Composer 等,以及reinstall Behat .这些文件不应以相对路径开头。

编辑:

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

关于php - 在 Ubuntu 终端上未检测到 Composer 供应商/bin 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35325896/

相关文章:

linux - 存储由名称中带有空格的文件组成的 ls 命令的输出

php - 通过 php 执行 bash 脚本

php - 如何为我的 Apache2 根目录中的所有文件设置根访问权限?

php - 过程中的游标仅锁定正在更新的当前行(在更新时),并且在持续时间内没有其他任何操作?

javascript - 使用 this.form.submit() 提交表单后无法获取表单元素的值;

c - 之间有什么区别。和./在bash中?

Magento:Ubuntu中的安装问题

php - Laravel 更新模型,具有唯一的属性验证规则

php - 如何在不收到错误响应的情况下与 ObjectiveC 中的服务器进行交互?

ubuntu - Dotnet 核心 Rider snap ubuntu msbuild