2015-01-16 185 views
2

運行橄欖石測試套件,我已經做了以下預提交git的鉤:無法從混帳掛鉤

#/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)(內置:二零一四年一月三十零日10時18分21秒)

預提交
PHP 5.3.28(cli)(內置:2014年1月23日18時02分48秒)

爲什麼我的Git掛鉤使用錯誤的PHP版本?我怎樣才能解決這個問題?謝謝!

+0

這是在文件頂部拋出錯誤:#!/ usr/bin/env php' –

+0

嗯......好點。現在我需要弄清楚PHP 5.4的存儲位置。 –

+0

嘗試'找到bin/php',看看他們都在哪裏。或者,如果你的默認值是5.4,那麼'哪個php會顯示你。 – halfer

回答

0

看起來像vendor/bin/peridot是一個PHP腳本,因爲您指出它以PHP hashbang(#!/usr/bin/env php)開頭。它看起來像你的Git環境與你平常的用戶帳戶有不同的PATH,所以它首先看到一個老版本的PHP。

在這種情況下的訣竅是在你的提交鉤子中硬連接PHP的版本,所以它不必做任何PATH搜索。