2016-11-17 25 views
1

當我嘗試將我的項目從開發環境切換到prod時,我遇到了一個問題,該項目是一個git存儲庫,我推送到我的服務器,現在我需要切換到生產並嘗試運行php init在服務器上,但所有的時間我收到了同樣的錯誤:PHP7上的Yii2初始化錯誤

Parse error: syntax error, unexpected T_FUNCTION in /my/root/path/init on line 70 

哪裏/我的/根/路徑/是我推的代碼的基本路徑。

有人對這個錯誤有什麼想法嗎?根據我以前的答案和註釋

+0

顯示圍繞第70行的代碼 – Bizley

+0

對不起,這是代碼:array_walk($ skipFiles,function(&$ value)use($ env,$ root){$ value =「$ root/$ value」;} );'就像我看到的是根據PHP文檔 – MarBer

+0

目標服務器上的PHP版本是什麼? – Bizley

回答

2

Try

array_walk($skipFiles, function(&$value, $key, $data) { 
    $value = $data[1] . '/' . $value; 
}, [$env, $root]); 

@Marber: Return the same error, a similar solution is function resolveBug($value) { $value = "$root/$value"; } array_walk($skipFiles, resolveBug($value)); and this resolve the bug but the procedure generate anothe error on line 81: Parse error: syntax error, unexpected '['... and the code is $callbacks = ['setCookieValidationKey', 'setWritable', 'setExecutable', 'createSymlink'];

我猜沒有對CGI側PHP 7和CLI是PHP < 5.3,這就是爲什麼控制檯命令不工作。

通過在控制檯中運行

php -v 

檢查您的主機的PHP版本。

+0

返回相同的錯誤,類似的解決方案是'function resolveBug($ value){''$ value =「$ root/$ value」;''}'array'walk($ skipFiles,resolveBug( $ value));'這就解決了錯誤,但是程序在第81行產生了錯誤:'解析錯誤:語法錯誤,意外'['...'和代碼是'$ callbacks = ['setCookieValidationKey',' setWritable','setExecutable','createSymlink'];' – MarBer

+0

@MarBer我已經更新了我的答案 – Bizley

+0

感謝您的回答,現在我知道問題了,我在服務器上生成了一個CGI PHP 7.0應用程序,但是當我運行' php init'我認爲執行是由php 5.2.17處理的,這個版本是由'php -v'返回的。感謝您的支持! – MarBer