簡體   English   中英

奇怪的回調錯誤PHP 5.4.30

[英]Strange Callback Error PHP 5.4.30

我在開發和生產服務器上具有相同的PHP文件。 這兩個服務器都運行相同版本的PHP,相同的模塊,相同的解釋器等。只有開發服務器才能成功運行代碼。 我不知道是什么原因造成的。 我通常會將此歸結為PHP版本差異,但事實並非如此。

兩台服務器都運行PHP 5.4.30。

這是有問題的代碼:

$inputArray = array('Tuesday' => null, 'Friday' => null, 'Monday' => null, 'Thursday' => null, 'Wednesday' => null);

$desiredIndexOrder = array('Monday' => 5, 'Tuesday' => 4, 'Wednesday' => 3, 'Thursday' => 2, 'Friday' => 1);

uksort($inputArray, function($a, $b) use ($desiredIndexOrder) {
    return $desiredIndexOrder[$a] > $desiredIndexOrder[$b] ? -1 : 1;
});

echo print_r($inputArray);

開發輸出(正確):

數組([Monday] => [Tuesday] => [Wednesday] => [Thursday] => [Friday] =>)1

生產產量:

警告:uksort()期望參數2是有效的回調,在第9行數組/home/friendso/public_html/test.php中沒有給出數組或字符串([星期二] => [星期五] => [星期一] => [星期四] => [星期三] =>)1

將回調寫為實際函數可以解決此問題,但是我很好奇可能導致此問題的原因。

正如Sammitch在對我的原始問題的評論中指出的那樣,eAccelerator確實是問題所在(不確定確切原因)。 要禁用eAccelerator,我在php.ini文件中做了這些更改,然后重新啟動了Apache。

eaccelerator.enable 0
eaccelerator.optimizer 0

該代碼現在可以按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM