2015-09-07 30 views
0

我在Windows上安裝了Zend Server 6.3和Php 5.4。系統工作得很好。現在我將代碼移至Live網站,該網站使用DirectAdmin在Ubuntu服務器上運行Php 5.3.29。所有其他網站在那裏運行良好。但我目前的網站給我這個錯誤(該網站上的WordPress 4.3):Php microtime()在現場不工作。尋找解決方法

Warning: mysql_connect(): Headers and client library minor version mismatch. 
Headers:50541 Library:50623 in /home/cheapauto/domains/*DOMAIN*/public_html/wp-includes/wp-db.php on line 1482 
Parse error: syntax error, unexpected '[' in /home/*USER*/domains/*DOMAIN*/public_html/wp-content/plugins/*MY-PLUGIN*/includes/final.class.NRSBooking.php on line 101 

線路是這樣的:

$now = explode(' ', microtime())[1]; 

而且我的整個插件的功能是這樣的:

private function getIncrementalHash($length = 5) 
{ 
    //$charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
    $charset = "ABCDEFGHIJKLMNPRSTUVYZ"; // fits LT & EN, O is skipped to similarity to Zero 
    $charsetLength = strlen($charset); 
    $result = ''; 

    $now = explode(' ', microtime())[1]; 
    while ($now >= $charsetLength) 
    { 
     $i = $now % $charsetLength; 
     $result = $charset[$i] . $result; 
     $now /= $charsetLength; 
    } 
    return substr($result, -$length); 
} 

任何想法如何使其在現場工作?

作爲每腓引用http://php.net/manual/en/function.microtime.php 它說:

microtime中()返回當前Unix時間戳和微秒。此 函數僅在支持gettimeofday()系統調用的操作系統上可用。

我使用這個函數生成獨特的新預訂代碼:

$newBookingCode = "R".$validNextMySQLInsertId."A".$this->getIncrementalHash(5); 

謝謝!

+0

服務器上的PHP版本? –

+0

Php 5.3.29在服務器上。 – KestutisIT

+1

如果它具有不同版本的PHP,那麼它不是一個非常好的測試環境,特別是如果測試環境具有較新版本的PHP,則LIVE環境 – RiggsFolly

回答

2

陣列解引用的,即正從函數結果返回陣列等:

$now = explode(' ', microtime())[1]; 

是可用自php5.4

對於PHP5.3和老年人使用:

$now = explode(' ', microtime()); 
$now = $now[1]; 
+2

只是爲了完整性,PHP5.3代碼將適用於所有新版本的PHP – RiggsFolly