Drupal — Неустранимая ошибка: класс Memcache не найден

Я установил друпал на свой локальный хост. Это работало хорошо 2 месяца назад, но сейчас что-то случилось, и я не знаю, почему. Я буду очень благодарен, если вы сможете мне помочь. Заранее спасибо.

Полная ошибка выглядит так:

Неустранимая ошибка: класс Memcache не найден в /srv/www/htdocs/modules/memcache/dmemcache.inc в строке 177.

1) php -m дает это:

[Модули PHP]
bz2
ctype
date
dom
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
pcre
PDO
pdo_mysql
pdo_sqlite
Сеанс отражения SimpleXML SPL SQLite standard sysvsem tokenizer xml xmlreader xmlwriter zip zlib

[Модули Zend] нет

2) memcached устанавливается через менеджер пакетов.

3) установлен модуль memcache для друпала

Что я делаю неправильно? Спасибо.


person soshial    schedule 14.12.2009    source источник


Ответы (6)


Я созваниваюсь с googletorp, что проблема, похоже, связана с установкой memcache. Попробуй это:

#if apt-get, rpm, or yum doesn't work
cd /usr/src/
wget http://pecl.php.net/get/memcache-2.2.4.tgz
tar -zxvf memcached-2.2.4.tgz
cd memcached-2.2.4
phpize && ./configure --enable-memcache && make
cp modules/memcache.so /usr/lib/php/modules/

# Note: packaged extension modules are now loaded via the .ini files
# found in the directory /etc/php.d
touch /etc/php.d/memcached.ini
echo 'extension=memcache.so' > /etc/php.d/memcached.ini

service httpd restart

Описанная выше процедура грубо скопирована из комментариев на страницу официальной документации по меме. . Оно датировано 11.12.09.

person mac    schedule 16.12.2009
comment
Должны ли быть какие-либо изменения в коде при условии, что я работаю на openSUSE 11.1? Спасибо. - person soshial; 16.12.2009
comment
Я не знаю, так как я не запускаю openSUSE ни на одном из своих серверов. Однако единственное, что кажется важным проверить, это то, что ваш php эффективно установлен в /usr/lib/php. Все остальное мне кажется шаблонным. - person mac; 16.12.2009

Сотрудник помог мне сегодня с этой проблемой, я использую Drupal & Drush (инструмент командной строки), а иногда и MAMP.

Пытаться:

echo $PHPRC

Если он окажется пустым, сохраните его в файле конфигурации ~/.profile или *~/.bash_profile*:

export PHPRC='/Library/Application Support/appsolute/MAMP PRO/conf/php.ini'
person Chris Charlton    schedule 18.08.2011

Большое спасибо за ваши ответы - в конце концов я справился с этой проблемой. Вот решение для openSUSE 11.1.

  1. Установите расширение memcache для php:

    #if apt-get, rpm, or yum doesn't work
    cd /usr/src/
    wget http://pecl.php.net/get/memcache-2.2.5.tgz
    tar -zxvf memcache-2.2.5.tgz
    cd memcache-2.2.5
    phpize5
    ./configure --enable-memcache
    make
    make install
    cp modules/memcache.so /usr/lib/php5/extensions/
    
    # Note: packaged extension modules are now loaded via the .ini files
    # found in the directory /etc/php5/conf.d/
    touch /etc/php5/conf.d/memcache.ini
    echo 'extension=memcache.so' > /etc/php5/conf.d/memcache.ini
    

    теперь вы должны перезапустить службу apache2

  2. Установите демон memcached для php и запустите его как демон.

  3. Установите плагин memcache для drupal (все инструкции здесь: http://drupal.org/project/memcache)

UPD. будьте осторожны с обновлением PHP: установленные модули могут не работать с новой версией - вам следует их перекомпилировать. но каким-то образом "pear install -f pecl/memcache" помог мне :)

person Community    schedule 02.01.2010

Кажется, ваш модуль memcache drupal ожидает, что класс будет доступен в упомянутом файле inc.

  • Вы обновили свой модуль drupal?
  • В таких случаях полезно просмотреть очередь задач модуля на drupal.org.

Похоже, проблема в модуле drupal. Я предполагаю, что обновление пошло не так.

РЕДАКТИРОВАТЬ:
Я взглянул на модуль, я был на своем iphone, поэтому не мог просмотреть код. Ваша проблема в том, что Drupal не может найти класс Memcache. Это исправление определяется на втором этапе процесса установки.

2. Установите расширение PECL memcache для PHP. Это должна быть версия 2.2.1 или выше, иначе вы столкнетесь с ошибками.

Либо вам этого сейчас не хватает, либо что-то не так с установкой. В любом случае, Drupal не может найти Memcache, определенный в этом расширении, и поэтому вы получаете фатальную ошибку.

person googletorp    schedule 14.12.2009
comment
спасибо, я попробую обновить его сейчас, но это не должно быть проблемой, потому что все работало нормально. я уверен, что проблема в конфигурации php, memcached и других подобных вещах :) - person soshial; 15.12.2009

я думаю, что memecache может быть установлен на вашем компьютере, но он неправильно скомпилирован с PHP, и раньше эта проблема была с memecache. проверьте здесь для получения более подробной информации.

person Yaniv Golan    schedule 17.12.2009

Может быть достаточно просто добавить extension=memcached.so к вашему php.ini. Расположение этого файла можно узнать с помощью phpinfo();

После этого обязательно перезапустите apache.

person Evert    schedule 17.12.2009