2009-12-14 114 views
3

我已经在我的本地主机上安装了drupal。它在2个月前运行良好,但现在发生了一些事情,我不知道为什么。如果你能帮助我,我将非常感激。提前致谢。Drupal - 致命错误:类'Memcache'找不到

完整的错误看起来是这样的:

Fatal error: Class 'Memcache' not found in /srv/www/htdocs/modules/memcache/dmemcache.inc on line 177

1)PHP -m给出了这样的:

[PHP Modules]
bz2
ctype
date
dom
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
pcre
PDO
pdo_mysql
pdo_sqlite
Reflection session SimpleXML SPL SQLite standard sysvsem tokenizer xml xmlreader xmlwriter zip zlib

[Zend Modules] none

2)Memcached是通过包管理器进行安装。

3)用于drupal的memcache模块安装

我做错了什么?谢谢。

回答

1

非常感谢您的回答 - 我最终解决了这个问题。 以下是openSUSE 11.1的解决方案。

  1. 为PHP安装memcache的扩展:

    #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. 安装为Drupal内存缓存的插件(这里所有的指令:http://drupal.org/project/memcache

UPD。小心升级PHP:插入模块可能不适用于新版本 - 您应该重新编译它们。但不知何故,“梨安装-f pecl/memcache”为我做了伎俩:)

0

看来你的memcache drupal模块期望在提及的inc文件中有一个类可用。

  • 您是否升级了您的drupal模块?
  • 在这种情况下,最好查看drupal.org上模块的问题点。

它看起来像是drupal模块,这是问题所在。我猜测升级出了问题。

编辑:
我在看模块拿了,我在我的iPhone,所以无法通过代码看。你的问题是Drupal找不到Memcache类。此修复程序在安装过程的第二步中定义。

2. Install the PECL memcache extension for PHP. This must be version 2.2.1 or higher or you will experience errors.

要么你现在错过了这个,要么是安装有问题。无论如何,Drupal无法找到在此扩展中定义的Memcache,这就是为什么你会得到致命错误。

+0

THX,我我会尝试更新它,但不应该是问题,因为它一切正常。我确定这个问题在配置php,memcached和其他类似的东西:) – soshial 2009-12-14 22:43:33

4

我与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 

上面的过程已经从评论到official memecache documentation的页面被残忍地复制。它的日期是11.12.09。

+0

如果我在openSUSE 11.1上工作,是否应该修改代码? Thx。 – soshial 2009-12-16 19:15:20

+0

我不知道,因为我没有在我的任何服务器上运行openSUSE。然而唯一看起来很重要的事情是你的php安装在'/ usr/lib/php'中。其余的都看起来像我的样板。 – mac 2009-12-16 19:45:19

0

只需将extension=memcached.so添加到您的php.ini即可。这个文件的位置可以使用phpinfo();

确保你以后重新启动apache。

0

我的意思是memecache可能安装在您的机器上,但它没有正确编译与PHP 有这个问题之前与memecache。 查询here了解更多详情

2

一位同事帮助我今天这个问题,我使用Drupal & Drush(命令行工具),有时MAMP。

尝试:

echo $PHPRC 

如果它出现空白,则它保存在您的〜/ .profile文件或您的*〜/ .bash_profile中*配置文件:

export PHPRC='/Library/Application Support/appsolute/MAMP PRO/conf/php.ini' 
相关问题