【问题标题】:PHP memcached Fatal error: Class 'Memcache' not foundPHP memcached 致命错误:找不到类“Memcache”
【发布时间】:2011-02-09 04:24:46
【问题描述】:

我已经粘贴了来自php.net 的示例,用于在 php 中使用 memcached,我得到了:

Fatal error: Class 'Memcache' not found

我的 php.ini 中有这个:

[内存缓存]
memcache.hash_strategy = “一致”
memcache.max_failover_attemps = 100
memcache.allow_failover = 1

以下是分别来自 php -i 和 php -m 的信息:

php -i | grep -i 内存缓存
内存缓存
内存缓存支持 => 启用
libmemcached 版本 => 0.37
注册的保存处理程序 => 文件用户 sqlite memcached

php -m | grep -i 内存缓存
内存缓存

所以 php 似乎已将 memcached 作为模块加载,并且 php info 表示它已加载并且正在使用 v .37。我还没有通过 apache 尝试过,我现在只是通过 cli 使用它。有什么想法吗?

【问题讨论】:

  • 我刚刚看了一眼,我的 php.ini 中已经列出了扩展名,并且我已经确保我的 extension_dir 指向了正确的位置。
  • 有关安装“MEMCACHE”的简单命令,请参见下面的答案。
  • sudo apt-get install php-memcache 对我有用。 packages.ubuntu.com/… 显示可用的包。

标签: php memcached ubuntu-9.10


【解决方案1】:

在 PHP 中有两个 memcached 扩展,“memcache”和“memcached”。

看起来您正在尝试使用一个(“memcache”),但另一个已安装(“memcached”)。

【讨论】:

  • 这有点傻,但不幸的是,它在 PHP 中很常见。他们没有更新旧的扩展以更好的方式使用新的东西,而是打破了向后的竞争,他们只是创建了一个新的扩展。另请参阅 mysql 和 mysqli。
  • 这似乎是正确的问题。但是我找到的所有说明似乎都说要安装 memcached,但请参阅 memcache。这有点令人困惑。
  • 好的,我找到了一个简单的修复方法(因为其他一切似乎都不起作用)。只需运行以下命令:sudo aptitude install memcached php5-memcached
  • 请注意,这些软件包名称仅适用于某些特定的 Debian 衍生产品。包名在其他环境中会有所不同。
  • 两者都加载应该不会对性能产生真正的影响,不会。
【解决方案2】:

不管 cmets 中接受的答案是什么,安装“Memcache”的正确方法是:

sudo apt-get install php5-memcache

注意 Memcache 和 Memcached 是两个不同但相关的软件,它们经常被混淆。

编辑 由于这是一篇旧文章,我认为值得一提的是,您应该将 php5 替换为您的 php 版本号。

【讨论】:

  • 几年后,我认为这个答案已经过时了。 sudo apt-get install php-memcache 对我有用。 packages.ubuntu.com/… 显示可用的包。
  • @Ryan 当然,这仅适用于不使用 PHP5 的情况。许多服务器仍然使用 PHP5,所以它和当时一样有效。此外,该问题被标记为 ubuntu-9.10,因此这进一步验证了我的答案,因为它与该版本直接相关。
  • "Memcached & Memcached" ??
  • 有windows的解决方案吗?
【解决方案3】:

我在这篇文章中找到了解决方案:https://stackoverflow.com/questions/11883378/class-memcache-not-found-php#=

我找到了适用于 PHP 5.4.4 的工作 dll 文件

我不知道它们有多稳定,但它们确实可以工作。学分转到此链接。

http://x32.elijst.nl/php_memcache-5.4-nts-vc9-x86.zip

http://x32.elijst.nl/php_memcache-5.4-vc9-x86.zip

是2.2.5.0版本,编译后发现(PHP 5.4.4)。

请注意,它不是 2.2.6 但可以工作。我还将它们镜像到我自己的 FTP 中。镜像链接:

http://mustafabugra.com/resim/php_memcache-5.4-vc9-x86.ziphttp://mustafabugra.com/resim/php_memcache-5.4-nts-vc9-x86.zip

【讨论】:

    【解决方案4】:

    右边是php_memcache.dll。就我而言,我使用的是用 vc9 而不是 vc6 编译器编译的 lib。在补丁错误日志中,我得到了类似的内容:

    PHP 启动:sqlanywhere:无法 初始化模块 编译的模块 构建 ID=API20090626, TS,VC9 PHP 使用 build ID=API20090626 编译, TS,VC6 这些选项需要匹配

    检查是否有相同的日志并尝试下载使用不同编译器编译的不同dll。

    【讨论】:

      【解决方案5】:

      对于 OSX 用户:

      运行以下命令安装 Memcached:

      brew install memcached
      

      【讨论】:

        【解决方案6】:

        我进入 wp-config/ 并删除了 object-cache.php 和 advanced-cache.php 对我来说效果很好。

        【讨论】:

        • 所做的只是阻止您的 WordPress 安装能够进行任何对象缓存。它实际上并不能解决任何问题,更不用说 OP 提出的问题了。
        猜你喜欢
        • 2011-06-27
        • 2011-11-05
        • 1970-01-01
        • 2010-12-26
        • 2012-04-14
        • 1970-01-01
        • 2012-09-22
        相关资源
        最近更新 更多