我在这上面挣扎了大约两天......所以谷歌和谷歌搜索也没有帮助我。
问题: 当我尝试访问新配置的Laravel安装中的任何页面时,收到以下消息:
Class 'Memcached' not found
我的环境
如果我在命令行上执行:
λ php -i | grep memcache
memcache
memcache support => enabled
memcache.allow_failover => 1 => 1
memcache.chunk_size => 32768 => 32768
memcache.compress_threshold => 20000 => 20000
memcache.default_port => 11211 => 11211
memcache.hash_function => crc32 => crc32
memcache.hash_strategy => consistent => consistent
memcache.lock_timeout => 15 => 15
memcache.max_failover_attempts => 20 => 20
memcache.protocol => ascii => ascii
memcache.redundancy => 1 => 1
memcache.session_redundancy => 2 => 2
Registered save handlers => files user memcache
经过一些谷歌搜索后,我发现Laravel需要模块memcached(是的......带有最后的D)。所以我设法加载的模块不适用于laravel。
在这篇SO帖子(Class 'Memcached' not found-(php 5.4.9,windows 7))上,@ rockerBOO说这个模块不是为windows构建的,如果有人编译它就“应该”工作......
我的资源已经结束......我没有找到模块DLL,我也不知道如何自己编译它。
任何人都知道有关此事的新内容吗?或许,可以指出我自己如何做到这一点??
无论如何,谢谢!答案 0 :(得分:0)
对于遇到此问题的任何人,我找到了解决方法。 有一个使用php_memcache库的包(是的,没有D)。
这个库已经编译了dll(用于php7),并且可以在这里下载:
https://github.com/nono303/PHP7-memcache-dll
laravel 5的包可以在这里下载:
https://packagist.org/packages/swiggles/memcache
按照说明安装两者,然后就可以了!
答案 1 :(得分:0)
Windows上的Memcached不存在,但是您可以在开发环境中将其替换为Memcache。
get
函数的工作原理相同,对于set
,您需要更改参数顺序:
if(!class_exists('Memcached')) {
class Memcached extends Memcache
{
public function set($key, $var, $expire = null)
{
/**
* @see http://php.net/manual/en/memcache.set.php
* @see http://php.net/manual/en/memcached.set.php
*/
parent::set($key, $var, null, $expire);
}
}
}