【问题标题】:Drupal — Fatal error: Class 'Memcache' not foundDrupal — 致命错误:找不到类“Memcache”
【发布时间】:2010-12-26 13:41:41
【问题描述】:

我已经在我的本地主机上安装了 drupal。 2个月前它运行良好,但现在发生了一些事情,我不知道为什么。如果您能帮助我,我将不胜感激。提前致谢。

完整的错误如下所示:

致命错误:类 'Memcache' 不是 在发现 /srv/www/htdocs/modules/memcache/dmemcache.inc 在第 177 行

1) php -m 给出这个:

[PHP 模块]
bz2
ctype
日期
dom
过滤器
gd
哈希
图标v
json
libxml
mbstring
mcrypt
mysql
mysqli
pcre
PDO
pdo_mysql
pdo_sqlite
反射会话 SimpleXML SPL SQLite 标准 sysvsem 标记器 xml xmlreader xmlwriter zip zlib

[Zend 模块] 没有

2) memcached 是通过包管理器安装的。

3) 安装了 drupal 的 memcache 模块

我做错了什么?谢谢。

【问题讨论】:

    标签: php drupal memcached


    【解决方案1】:

    您的 memcache drupal 模块似乎期望在提到的 inc 文件中提供一个类。

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

    看起来问题出在drupal模块上。我猜是升级出错了。

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

    2。为 PHP 安装 PECL 内存缓存扩展。这必须是版本 2.2.1 或 更高,否则您将遇到错误。

    要么你现在缺少这个,要么安装有问题。在任何方面,Drupal 都找不到此扩展中定义的 Memcache,这就是您收到致命错误的原因。

    【讨论】:

    • 谢谢,我现在会尝试更新它,但应该不是问题,因为一切正常。我确定问题出在 php、memcached 和其他此类东西的配置中 :)
    【解决方案2】:

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

    上面的程序已经从cmets被粗暴地复制到了official memecache documentation的页面上。日期为 11.12.09。

    【讨论】:

    • 如果我在 openSUSE 11.1 上工作,是否应该对代码进行任何修改?谢谢。
    • 我不知道,因为我没有在我的任何服务器上运行 openSUSE。然而,唯一需要检查的似乎是您的 php 有效地安装在/usr/lib/php 中。其余的在我看来都是样板。
    【解决方案3】:

    extension=memcached.so 添加到您的php.ini 可能就足够了。这个文件的位置可以通过phpinfo();找到

    确保之后重新启动 apache。

    【讨论】:

      【解决方案4】:

      我的看法是 memecache 可能安装在你的机器上,但它没有用 PHP 正确编译 之前使用 memecache 遇到过这个问题。 查看here了解更多详情

      【讨论】:

        【解决方案5】:

        非常感谢您的回答——我最终解决了这个问题。 这是 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 daemon for php 并将其作为守护进程运行。

        3. 为 drupal 安装 memcache 插件(此处的所有说明:http://drupal.org/project/memcache

        UPD。升级 PHP 时要小心:安装的模块可能不适用于新版本——你应该重新编译它们。但不知何故“pear install -f pecl/memcache”对我有用:)

        【讨论】:

          【解决方案6】:

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

          试试:

          echo $PHPRC
          

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

          export PHPRC='/Library/Application Support/appsolute/MAMP PRO/conf/php.ini'
          

          【讨论】:

          • 它适用于 MAMP PRO。如果你使用特定的php版本,你需要定位正确的.ini文件,如export PHPRC='/Library/Application Support/appsolute/MAMP PRO/conf/php7.4.2.ini'要编辑文件,你可以做nano ~/.bash_profiletouch ~/.bash_profile; open ~/.bash_profile
          猜你喜欢
          • 2011-11-05
          • 2011-06-27
          • 2011-02-09
          • 2012-10-07
          • 2012-06-02
          • 1970-01-01
          • 2014-10-03
          相关资源
          最近更新 更多