我有一个自定义的WordPress插件,它在我的本地开发机器上运行良好,但在生产服务器上会触发错误。
功能:
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);
}
错误:
分析错误:语法错误,上的(插件中)中出现意外T_FUNCTION第30行
第30行是函数的第二行。
我的本地MAMP服务器=PHP版本5.3.6
Linux生产服务器=PHP 5.3.5版
有人知道这个问题可能是什么吗?为什么它会出现在一个环境中,而不会出现在另一个环境?
更新:
我刚刚注意到,如果我把这个函数放在生产框上的一个常规PHP文件中,它执行得很好——所以它只是在它是WordPress插件的一部分时触发错误,这对我来说就没有什么意义了…
很可能是您对闭包的使用。
这些在PHP>5.3中可用。您的生产服务器要么没有运行5.3,要么是一个可能有问题的小版本。
重构use
子句,我想它将在这两个环境中运行。