The memcache extension must be loaded for using this backend

Exile

Проверенные
Сообщения
5,183
Реакции
11,012
Баллы
7,175
Совет несколько капитанский, но для некоторых может стать настоящим откровением.

У memcache в php есть два расширения:
  • memcache
  • memcached
Первое расширение "старое", второе более новое. На сервере может не быть установленного "старого" расширения, например сервер новый и только на php 7, в таком случае с вот таким стандартным конфигом:
PHP:
// Memcache engine
$config['cache']['backend'] = 'Memcached';
$config['cache']['backendOptions'] = array(
    'compression' => false,
    'servers' => array(
        array(
            'host' => '127.0.0.1',
            'port' => 11211,
        )
    )
);
У вас будет не менее стандартная ошибка:
PHP:
An exception occurred: The memcache extension must be loaded for using this backend ! in /var/www/***/library/Zend/Cache.php on line 209

Zend_Cache::throwException() in Zend/Cache/Backend/Memcached.php at line 123
Zend_Cache_Backend_Memcached->__construct() in Zend/Cache.php at line 153
Zend_Cache::_makeBackend() in Zend/Cache.php at line 94
Zend_Cache::factory() in XenForo/Application.php at line 763
XenForo_Application->loadCache() in XenForo/Application.php at line 973
XenForo_Application->lazyLoad() in XenForo/Application.php at line 1004
XenForo_Application::get() in XenForo/Application.php at line 1649
XenForo_Application::getCache() in XenForo/Model.php at line 146
XenForo_Model->_getCache() in XenForo/Model/DataRegistry.php at line 81
XenForo_Model_DataRegistry->getMulti() in XenForo/Dependencies/Abstract.php at line 147
XenForo_Dependencies_Abstract->preLoadData() in XenForo/FrontController.php at line 127
XenForo_FrontController->run() in /var/www/***/index.php at line 13

Решение этой проблемы на самом деле простое, но нигде почему-то не афишируется даже на официальном форуме, где советуют искать и ставить старое расширение. Приводим конфиг к такому виду:
PHP:
// Memcached engine
$config['cache']['backend'] = 'Libmemcached';
$config['cache']['backendOptions'] = array(
    'compression' => false,
    'servers' => array(
        array(
            'host' => '127.0.0.1',
            'port' => 11211,
        )
    )
);
И все заработает, благодаря поддержке разных типов кешей в Zend Framework, на котором работает XenForo.
 
На сервере может не быть установленного "старого" расширения,
Или оба этих расширения могут быть доступны
Код:
 php -m | grep memcach
memcache
memcached
Хотя говорят, что memcache несколько быстрее memcached, особой разницы не заметил.

PS: при запуске самого демона memcached, не забывайте ограничить его интерфейсом 127.0.0.1, как таковых авторизаций там нет и торчать наружу такой демон не должен(!).
 
Последнее редактирование:
хм,
а возможно в случае с The memcache extension must be loaded...
кому-то поможет: yum install php-pecl-memcache
ну или apt-get....
 
Спасибо за решение, установил себе memcached на сервере, вписал в конфиге memcached, а разрабы имели ввиду, что memcached это memcache расширение для пхп....
 
Smalesh, Я про то, что если в конфиге ксена пишешь memcached, движок вызывает memcache
 
Smalesh, да это понятно!!! Ты не понял мою мысль((
 
Я то понял, но ноги растут отсюда

Чтобы не путать между собой, как здесь
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу