PHP memcached致命错误:找不到类“ Memcache”


80

我已经从php.net粘贴了在php中使用memcached的示例,并且得到了:

Fatal error: Class 'Memcache' not found

我在php.ini中有这个:

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

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

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

php -m | grep -i memcache
memcached

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



我只是看了一眼,已经在php.ini中列出了扩展名,并且已经确保我的extension_dir指向正确的位置。
jpfuentes2 2010年

请参阅下面的答案,以获取安装“ MEMCACHE”的简单命令。
Phill Healey

1
sudo apt-get install php-memcache对我有用。packages.ubuntu.com/…显示了可用的软件包。
瑞安

Answers:


129

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

您似乎正在尝试使用其中一个(“ memcache”),但已安装了另一个(“ memcached”)。


4
这有点愚蠢,但是不幸的是,这是PHP中频繁使用的模式。他们没有更新旧版本的扩展程序以更好的方式使用更新的内容,而是破坏了向后兼容,他们只是创建了一个新扩展程序。另请参见mysql和mysqli。
查尔斯

这似乎是正确的问题。但是我发现的所有指令似乎都说要安装memcached,但请参阅memcache。这有点令人困惑。
帕特里克

7
好的,我找到了一个简单的修复方法(因为其他所有方法似乎都不起作用)。只需运行以下命令:sudo aptitude install memcached php5-memcached
Patrick

请注意,这些软件包名称仅适用于某些特定的Debian衍生产品。在其他环境中,程序包名称将有所不同。
2013年

1
两者都加载不会对性能产生真正的影响。
Charles

21

尽管评论中接受了答案,但安装“ Memcache”的正确方法是:

sudo apt-get install php5-memcache

注意Memcache和Memcached是两个截然不同但相互关联的软件,通常会混淆。

编辑 因为这是一个老帖子,我认为值得一提的是您应该用您的php版本号替换php5


几年后,我认为这个答案已经过时了。sudo apt-get install php-memcache对我有用。packages.ubuntu.com/…显示了可用的软件包。
瑞安

1
@Ryan当然,仅在不使用PHP5的情况下才适用。许多服务器仍在使用PHP5,因此它与当时一样有效。另外,该问题被标记为ubuntu-9.10,因此这进一步验证了我的答案,因为它直接与该版本有关。
Phill Healey

“ Memcached和Memcached”?
布莱恩·利什曼

Windows是否有解决方案?
IrfanAnwar

1

我在这篇文章中找到了解决方案: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.zip http://mustafabugra.com/resim/php_memcache-5.4-nts-vc9-x86.zip


0

右边是php_memcache.dll。就我而言,我使用的是用vc9而不是vc6编译器编译的lib。在apatche错误日志中,我得到如下信息:

PHP启动:sqlanywhere:无法初始化模块使用构建ID = API20090626,TS,VC9编译的模块使用构建ID = API20090626,TS,VC6编译的PHP

检查您是否具有相同的日志,然后尝试下载使用其他编译器编译的其他dll。



-8

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


2
这样做是为了防止您的WordPress安装无法执行任何对象缓存。它实际上不是解决任何问题的方法,更不用说OP提出的问题了。
Phill Healey '18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.