找不到“Memcache”类& PHP

时间:2012-08-09 12:23:34

标签: php memcached xampp

我在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(); show dll未加载。到目前为止尝试了几个不同的DLL文件,没有用。 dll也是正确的。它位于正确的文件夹中。

(P.S。有些人可能认为这个主题可能有重复,但是there is only 1 person遵循相同的指示并且在SO中有相同的错误。自3月以来,这个问题没有答案或解决方案。)

6 个答案:

答案 0 :(得分:11)

我找到了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

答案 1 :(得分:7)

将此添加到您的php.ini:

extension="php_memcache.dll"

并重新启动apache

答案 2 :(得分:5)

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));
}

答案 3 :(得分:4)

所以我现在寻找解决方案。在这里,您可以下载一些已编译的扩展。

http://downloads.php.net/pierre/

问题是目前没有 PHP 5.4 的memcache扩展名。这是无法加载扩展名的原因。您需要正确的PHP版本和Tead Safe for Windows的扩展名。

如果您需要扩展名,最简单的方法是使用 PHP 5.3

最新版本的memcache是​​版本 3.0.6 ,但它是测试版,你可以在这里看到它。

http://pecl.php.net/package/memcache

您可以尝试使用Windows系统测试版和compile。但它的工作很多。

答案 4 :(得分:0)

另外一个问题可能是在apache .conf文件中的某处加载另一个版本的php模块。需要检查重复的" LoadModule php ..."指令以及该模块是否编译为正确的apache版本。 听起来很简单,但是当你在一台机器上有多个版本的php时却不是这样:) 或者它也可能是SElinux问题。

答案 5 :(得分:0)

xampp windows版本为32bit,你必须使用32bit memcache.dll

我对你有用的洞!