找不到类“Memcache”和 PHP
Posted
技术标签:
【中文标题】找不到类“Memcache”和 PHP【英文标题】:Class 'Memcache' not found & PHP 【发布时间】:2012-08-06 16:13:56 【问题描述】:我通过在 Windows7 上阅读 this article 安装了 memcached,但不幸的是我不断收到错误 Fatal error: Class 'Memcache' not found in D:\xampp\htdocs\test\memcache\test.php on line 2
第 2 行:$memcache = new Memcache;
Win7 64,已安装 Xampp。我在命令行上使用net start "memcached Server"
,但它说服务已经启动。
其他一些可能有帮助的信息;
关于 php.ini 文件:
extension=php_memcache.dll
[Memcache]
memcache.allow_failover = 1
memcache.max_failover_attempts=20
memcache.chunk_size =8192
memcache.default_port = 11211
更新:phpinfo();显示 dll 未加载。到目前为止尝试了几个不同的dll文件,没有工作。 dll的位置也正确。它似乎在正确的文件夹中。
(P.S. 有些人可能认为这个主题可能有重复,但 there is only 1 person 遵循相同的说明并在 SO 中出现相同的错误。自 3 月以来,该问题没有答案或解决方案。)
【问题讨论】:
你在 php 扩展文件夹中有php_memcache.dll
吗?
错误不是memcached服务器,而是php配置。运行 php info 以查看 dll 是否正在加载。自配置更改以来您已重新启动服务器?要检查的另一件事是您使用的 dll 都是 64 位(我实际上运行 32 位,因为它更容易找到和正确,但只要确保它都是一个或另一个)。检查 Apache 日志中的启动错误。
@favoretti 我实际上将 dll 放入 php/ext
文件夹。所以它应该在那里。
@Robbie,它似乎不在 phpinfo 中。是的,我多次重新启动 apache 以使其在安装后工作,但没有工作。我想我安装了 64 位 dll,但会再次检查。如果现在有的话,会检查 apache 日志。那我就在这里回信。
小心,memcache 不是 memcached。
【参考方案1】:
我找到了适用于 PHP 5.4.4 的工作 dll 文件
我不知道它们有多稳定,但它们确实可以工作。致谢this link。
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
【讨论】:
【参考方案2】:将此添加到您的 php.ini:
extension="php_memcache.dll"
然后重启apache
【讨论】:
我赞成删除它。不过,您的确切“解决方案”已经存在问题中。【参考方案3】:Memcached 只使用标准的文本接口,因此可以在没有模块的情况下使用它。
// connect
$link = fsockopen($host,$port,$errno,$errst,$timeout);
// set
$data = sprintf("set %s 0 %s %s\r\n%s\r\n",
$key,$expire,strlen($value),$value);
fwrite($link,$data);
$result = trim(fgets($link));
if ($result == 'ERROR')
// :(
// get
$data = sprintf("get %s\r\n",$key);
fwrite($link,$data);
$line = rtrim(fgets($link));
if ($line != 'END')
return rtrim(fgets($link));
【讨论】:
【参考方案4】:所以我现在正在寻找解决方案。在这里你可以下载一些编译好的扩展。
http://downloads.php.net/pierre/
问题是目前没有适用于 PHP 5.4 的 memcache 扩展。这就是您的扩展无法加载的问题。您需要正确的 PHP 版本和适用于 Windows 的 Tead Safe 的扩展。
因此,如果您需要扩展,最简单的方法是使用 PHP 5.3。
memcache 的最新版本是 3.0.6,但它是 beta 版本,您可以在此处查看。
http://pecl.php.net/package/memcache
您可以尝试将测试版和compile 与您的 Windows 系统一起使用。但它的工作量很大。
【讨论】:
看来我的选择是;降级 PHP 或自己编译 beta 没有任何保证。顺便说一句,谢谢你指出这一点。你知道 memcacheD 是否有适用于 windows 和我的版本的扩展名吗? memcache 守护进程是一个独立的程序,应该可以工作,这不是问题。守护进程未连接到 PHP 版本。并纠正这是选择。或者你可以等到版本稳定,模块可用。【参考方案5】:问题也可能是在 apache .conf 文件的某处加载另一个版本的 php 模块。需要检查重复的“LoadModule php ...”指令以及该模块是否编译为正确的 apache 版本。 听起来很简单,但当您在一台机器上有多个版本的 php 时,情况并非如此 :) 或者也可能是 SElinux 的问题。
【讨论】:
【参考方案6】:xampp windows版本是32bit,你必须使用32bit memcache.dll
我的洞对你有用!
【讨论】:
以上是关于找不到类“Memcache”和 PHP的主要内容,如果未能解决你的问题,请参考以下文章
PHP memcached 致命错误:找不到类“Memcache”
致命错误:在 Zend Framework + Wamp 中找不到类“Memcache”