PHP 5.4和Laravel类'Memcached'未找到。

17

我知道已经有大约10个类似的问题了,但是没有一个完全符合我的情况。

完成的步骤:

  1. 安装了memcache
  2. 安装了php memcache模块
  3. 更新了laravel配置以使用memcache
  4. 重新启动了服务器

php信息结果:

memcache.allow_failover 1   1
memcache.chunk_size 8192    8192
memcache.default_port   11211   11211
memcache.default_timeout_ms 1000    1000
memcache.hash_function  crc32   crc32
memcache.hash_strategy  standard    standard
memcache.max_failover_attempts  20  20

缓存工具的结果:

         accepting_conns           1
               auth_cmds           0
             auth_errors           0
                   bytes           0
              bytes_read          14
           bytes_written        1096
              cas_badval           0
                cas_hits           0
              cas_misses           0
               cmd_flush           0
                 cmd_get           0
                 cmd_set           0
               cmd_touch           0
             conn_yields           0
   connection_structures           6
       crawler_reclaimed           0
        curr_connections           5
              curr_items           0
               decr_hits           0
             decr_misses           0
             delete_hits           0
           delete_misses           0
       evicted_unfetched           0
               evictions           0
       expired_unfetched           0
                get_hits           0
              get_misses           0
              hash_bytes      524288
       hash_is_expanding           0
        hash_power_level          16
               incr_hits           0
             incr_misses           0
                libevent 2.0.21-stable
          limit_maxbytes   268435456
     listen_disabled_num           0
       lrutail_reflocked           0
            malloc_fails           0
                     pid       12022
            pointer_size          64
               reclaimed           0
            reserved_fds          20
           rusage_system    0.043400
             rusage_user    0.065101
                 threads           4
                    time  1421438137
       total_connections           7
             total_items           0
              touch_hits           0
            touch_misses           0
                  uptime        2607
                 version      1.4.21

在php -m命令中,它被列为"memcache"。

然而,当我进入php artisan tinker并尝试进行任何缓存操作时,出现了典型的错误信息Fatal error: Class 'Memcached' not found in vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php on line 44

简而言之:

我已经通过多种方法确认安装了memcache,并确认了php的模块已安装。但仍无法使用memcached类。


1
你是否安装了memcache或memcached?Laravel需要后者。请访问http://pecl.php.net/package/memcached。 - Mihai
哇,让我来处理这个,我不知道它们是两个不同的东西。 - Bill Garrison
3
memcachememcached 是两个不同的东西。 - Mateusz Nowak
4个回答

23
如果你在Ubuntu环境下,请尝试使用以下命令安装Memcached: sudo apt-get install php5-memcached 安装完成后,重启服务器: sudo service lighttpd restart 或者 sudo service apachectl2 restart 或者 sudo service nginx restart

这解决了我的“laravel 5.0中找不到类memcached”的问题,谢谢!在重启apache2服务器之前,我还添加了一行代码,“sudo php5enmod memcached”。 - Jayant
在我的情况下,执行sudo apt-get install -y php7.2-memcached命令。 - Randell

19

我最终使用了http://pecl.php.net/package/memcached并按照自述文件中的说明进行安装/将“so”文件复制到模块目录/将so文件添加到我的php.ini。感谢您的帮助……感觉很愚蠢。 - Bill Garrison
没问题。这个确切的问题经常出现,因为扩展似乎有完全相同的名称,但是它们是完全不同的。而且也没有帮助的是memcache服务器可以互换地称为memcache和memcached。 - Daniel Williams
1
最佳的安装方式是什么?我在运行 Laravel 应用程序的 artisan 命令时遇到了这个错误。请问如何在 Mac 上解决? - Connor Leech

10
apt-get install php-memcached

已解决 Laravel 报错 "Class Memcached not found"。


提醒一下,你需要在运行上述命令后重新启动 PHP,即 sudo service php7.2-fpm restart - sulaiman sudirman

2
在 Laravel/Lumen 5.4 中,只需在 .env 文件中替换 CACHE_DRIVER=file , artisan 命令将正常工作,但你将无法像 Laravel 一样获得所有命令。

使用这种方法特别适用于不需要memcached的情况。对我来说,这是在我的开发服务器上,我不需要memcache或任何缓存解决方案。这个方法迅速解决了我的问题,而无需安装软件包或修改我的apache/php安装。 - Christian Noel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接