Laravel + PHP 7 + Windows + Memcached 扩展(Class 'Memcached' 未找到)
Laravel + PHP 7 + Windows + Memcached extension (Class 'Memcached' not found)
我为此苦苦挣扎了大约 2 天...所以谷歌搜索也无济于事。
问题:
当我尝试访问我新配置的 Laravel 安装上的任何页面时,我收到以下消息:
Class 'Memcached' not found
我的环境
- Windows 7
- 阿帕奇 2.4
- PHP 7.1.8(TS、x86、Apache 模块)
如果我在命令行执行:
λ 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 post (Class 'Memcached' not found-(php 5.4.9,windows 7)) 上,@rockerBOO 说这个模块不是为 windows 构建的,如果有人编译它,它 "should" 可以工作.. .
我的资源用完了...我没有找到那个模块 DLL,我也不知道如何自己编译它。
有人知道这方面的新消息吗?或者,也许可以告诉我如何自己做??
谢谢!
对于遇到此问题的任何人,我找到了解决方法。
有一个使用 php_memcache 库的包(是的,没有 D)。
此库已编译 dll(适用于 php7),可在此处下载:
https://github.com/nono303/PHP7-memcache-dll
laravel 5的包可以在这里下载:
https://packagist.org/packages/swiggles/memcache
按照说明进行安装,然后就可以开始了!
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);
}
}
}
我为此苦苦挣扎了大约 2 天...所以谷歌搜索也无济于事。
问题: 当我尝试访问我新配置的 Laravel 安装上的任何页面时,我收到以下消息:
Class 'Memcached' not found
我的环境
- Windows 7
- 阿帕奇 2.4
- PHP 7.1.8(TS、x86、Apache 模块)
如果我在命令行执行:
λ 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 post (Class 'Memcached' not found-(php 5.4.9,windows 7)) 上,@rockerBOO 说这个模块不是为 windows 构建的,如果有人编译它,它 "should" 可以工作.. .
我的资源用完了...我没有找到那个模块 DLL,我也不知道如何自己编译它。
有人知道这方面的新消息吗?或者,也许可以告诉我如何自己做??
谢谢!
对于遇到此问题的任何人,我找到了解决方法。 有一个使用 php_memcache 库的包(是的,没有 D)。
此库已编译 dll(适用于 php7),可在此处下载:
https://github.com/nono303/PHP7-memcache-dll
laravel 5的包可以在这里下载:
https://packagist.org/packages/swiggles/memcache
按照说明进行安装,然后就可以开始了!
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);
}
}
}