19

我通过在 Windows7 上阅读这篇文章安装了 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的位置也正确。它似乎在正确的文件夹中。

(PS 有些人可能认为关于这个主题可能有重复,但只有 1 人遵循相同的说明并在 SO 中出现相同的错误。该问题自 3 月以来没有答案或解决方案。)

4

6 回答 6

11

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

于 2012-08-12T08:43:56.593 回答
7

将此添加到您的 php.ini 中:

extension="php_memcache.dll"

并重新启动apache

于 2012-08-14T09:35:26.077 回答
6

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));
}
于 2012-08-15T00:48:48.110 回答
5

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

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

您可以尝试获取 beta 版本并使用您的 Windows 系统进行编译。但它的工作量很大。

于 2012-08-11T16:08:19.603 回答
0

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

于 2015-02-14T09:19:06.960 回答
0

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

我洞对你有用!

于 2016-10-10T08:20:11.793 回答