У меня есть Zend Server 6.3 и Php 5.4 на Windows. И система работает очень хорошо. Теперь я переместил код на живой сайт, который запускает Php 5.3.29 на Ubuntu Server с DirectAdmin. Все остальные сайты работают хорошо там. Но мой текущий веб-сайт дает мне эту ошибку (сайт на WordPress 4.3):
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 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$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);
}
Есть идеи, как заставить это работать на живом сайте?
По ссылке Php http://php.net/manual/en/function.microtime.php
это говорит:
microtime () возвращает текущую метку времени Unix с микросекундами. это
функция доступно только в операционных системах, которые поддерживают
Системный вызов gettimeofday ().
И я использую эту функцию для генерации уникального нового кода бронирования:
$newBookingCode = "R".$validNextMySQLInsertId."A".$this->getIncrementalHash(5);
Спасибо!
Разыменование массива, то есть получение результатов от функции, которая возвращает массив, например:
$now = explode(' ', microtime())[1];
доступно с php5.4
За php5.3 и старшее использование:
$now = explode(' ', microtime());
$now = $now[1];
Других решений пока нет …