2012-01-17 37 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

相關問題