繁体   English   中英

Laravel + PHP 7 + Windows + Memcached扩展(未找到类“ Memcached”)

[英]Laravel + PHP 7 + Windows + Memcached extension (Class 'Memcached' not found)

我为此奋斗了大约2天...所以,Google也没有帮助我。

问题:当我尝试访问新配置的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帖子(未找到类'Memcached'-(php 5.4.9,windows 7) )上,@ rockerBOO表示此模块不是为Windows构建的,如果有人对其进行编译,则“应该”工作...

我的资源结束了……我没有找到那个模块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);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM