Сайт с ZF1, который ведет на форум phpbb.
Обновление phpbb с 3.0.12 до 3.1.5 (этой проблемы не было в 3.0.12)
Форум работает нормально, когда я обращаюсь к нему напрямую.
Однако при доступе к нему через фреймворк
(например, для доступа к пользовательским функциям, таким как data['user_unread_privmsg']
)
я получаю следующую ошибку:
Call to undefined method Zend_Cache_Core::get() in /forum/phpbb/db/driver/mysqli.php on line 119
Я выполнил это с помощью xe-debug, и он останавливается на следующей функции:
/**
* {@inheritDoc}
*/
function sql_server_info($raw = false, $use_cache = true)
{
global $cache;
if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('mysqli_version')) === false)
{
$result = @mysqli_query($this->db_connect_id, 'SELECT VERSION() AS version');
if ($result !== null)
{
$row = @mysqli_fetch_assoc($result);
$this->sql_server_version = $row['version'];
if (!empty($cache) && $use_cache)
{
$cache->put('mysqli_version', $this->sql_server_version);
}
}
@mysqli_free_result($result);
}
return ($raw) ? $this->sql_server_version : 'MySQL(i) ' . $this->sql_server_version;
}
точная строка, вызывающая ошибку, следующаяif (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('mysqli_version')) === false)
моя настройка кеша ZF (которая хорошо работает для других элементов кеша) выглядит так
$cachedir = APPLICATION_PATH . '/public/tmp/cache';
if (!is_dir($cachedir)) {
mkdir($cachedir, 0755, true); // make directory if it doesn't exist
}
$frontendOptions = array(
'lifetime' => 600,
'automatic_serialization' => true
);
$backendOptions = array(
'cache_dir' => $cachedir
);
// getting a Zend_Cache_Core object
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
Zend_Registry::set("cache", $cache);
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
$cache = Zend_Cache::factory('Core', 'APC', $frontendOptions);
Zend_Registry::set("apc_cache", $cache);
Любые идеи, как обойти эту проблему?
(Я удалил старый кеш, установил права tmp/cache на 777 и т. д.)