2016-11-17 84 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