2012-01-17 59 views
0

我有一个自定义的WordPress插件,可以在本地开发机器上正常工作,但会触发生产服务器上的错误。我的WP插件中的解析错误 - 适用于一台机器,但不适用于其他

功能:

function _iniloader_get_dirs($dir) { 
     $dirs = array_filter(scandir($dir), function ($item) use ($dir) { 
      return (is_dir($dir.'/'.$item) && $item != "." && $item != ".."); 
     }); 
     // Use array_values to reset the array keys: 
     return array_values($dirs); 
} 

错误:

Parse error: syntax error, unexpected T_FUNCTION in (in plugin) on line 30

线30是函数的第二行。

我的本地MAMP服务器= PHP版本5.3.6
Linux的生产服务器= PHP版本5.3.5

任何人是否有一个想法是什么的问题可能是,为什么它会在一个环境中出现,但不是其他?


UPDATE:

我只注意到,如果我在生产彩盒一个普通的PHP文件中把这个功能,它执行细所以才引发错误时,它的一部分WordPress插件,这对我来说更没意义...

+0

是生产箱子窗户? – 2012-01-17 15:28:03

+0

没有Linux。 WebFaction。 – Yarin 2012-01-17 15:29:12

+1

您可能误解了生产服务器。在调用脚本中使用'print PHP_VERSION;'来找出版本。 – mario 2012-01-17 15:29:25

回答

2

可能这是您的使用Closures

这些变得可用PHP> 5.3。您的生产服务器不运行5.3或者可能有问题的次要版本。

重构use子句,我想它可以在两种环境下运行。

+0

看起来你是对的。你能提供关于如何将其转换为<5.3的指导吗?如何在不重写整个函数的情况下重构'use'子句? – Yarin 2012-01-17 15:38:44

+0

不幸的是没有。你将不得不使用[传统的回调](http://www.php.net/manual/en/language.pseudo-types.php#language.types.callback),这将要求你重写整个函数* 。 – 2012-01-17 15:55:41

+0

杰森罗杰,谢谢。 – Yarin 2012-01-17 15:58:13

相关问题