【发布时间】:2015-01-16 19:53:13
【问题描述】:
我已经做了以下 pre-commit git hook:
#/usr/bin/env bash
echo "Running pre-commit hooks... "
vendor/bin/peridot -c OS/Specs/peridot.php OS/Specs/
echo "Done."
当我简单地将这个命令输入到终端时,它会运行我所有的测试。但是,当触发 git 钩子时,我得到了这个:
Running pre-commit hooks...
PHP Parse error: parse error in /path/to/repo/vendor/peridot-php/peridot/bin/peridot on line 9
Done.
违规行包含一个带括号的数组 []。当我更改为旧的 array() 语法时,错误消失了(并被更远的另一个替换)。此外,当我在两个地方运行 php -v 时,我得到:
终端
PHP 5.4.24 (cli)(构建时间:2014 年 1 月 30 日 10:18:21)
预提交
PHP 5.3.28 (cli)(构建时间:2014 年 1 月 23 日 18:02:48)
为什么我的 Git 挂钩使用了错误版本的 PHP?我怎样才能解决这个问题?谢谢!
【问题讨论】:
-
文件顶部有这个抛出错误:
#!/usr/bin/env php -
嗯...好点。现在我需要弄清楚 PHP 5.4 的存储位置。
-
试试
locate bin/php看看他们都在哪里。或者,如果您的默认值为 5.4,则只会显示which php。 -
这个 php 位置是否有可能跨平台(mac/linux)保持一致,所以我可以将它保存在 git repo 中?
-
不是,不是。 Mac 默认安装了 PHP,但许多开发人员从 Homebrew 或 Macports 安装了一个新副本(主要是为了避免扰乱操作系统安装),这些都有自己的默认位置。也不保证不同的 Linux 发行版。您可能希望使用 shell 脚本 (a) 在配置文件中查找 PHP 路径,或者 (b) 如果您想变得非常聪明,请使用
locate然后自动检测来自php -v的版本.我会选择第一个,如果没有提供配置文件,默认为php。