【问题标题】:How to use Memcached for session in Laravel 5.7?如何在 Laravel 5.7 中使用 Memcached 进行会话?
【发布时间】:2019-02-26 16:18:41
【问题描述】:

通常我使用文件作为驱动程序来存储会话和缓存。现在我想使用Memcached 在 Laravel 5.7 应用程序上存储会话和缓存。这对我来说是新的。我已经在本地环境中安装了php-memcached

在我的 Laravel 5.7 Web 应用程序中,我在 .env 文件中配置了 session.drivercache.default,如下所示。

SESSION_DRIVER=memcached
CACHE_DRIVER=memcached

我将其他所有内容保留为默认安装。当我刷新页面时,出现以下错误。

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Class 'Memcached' not found
/vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php 69

我知道当您为会话和缓存配置配置驱动程序以使用Memcached 时,MemcachedConnector 将参与其中。它导入Memcached 类并尝试创建Memcached 类的实例对象,如下所示。

use Memcached;

class MemcachedConnector {
    protected function createMemcachedInstance($connectionId) {
        return empty($connectionId) ? new Memcached : new Memcached($connectionId);
    }
}

由于上述错误,似乎缺少 Memcached 类。我该如何解决?即使解决了问题,请不要告诉我执行以下操作。

SESSION_DRIVER=file
CACHE_DRIVER=file

SESSION_DRIVER=array
CACHE_DRIVER=array

因为我想使用Memcached 并且想知道如何使它工作。

【问题讨论】:

  • 您安装的是php-memcached 还是php-memcache?请注意这是两个不同的扩展。
  • php.net/manual/en/memcached.installation.php - 通过在 Laravel 应用程序中输出 phpinfo() 来特别检查它是否在 php.ini 中正确启用。
  • @dparoli 由于与版本相关的特定原因,我已经安装了 memcached,但我不记得版本是什么,PHP 7.2 或 Laravel 5.7。我忘记了那个具体原因,但知道我最好使用 memcached

标签: php laravel session memcached laravel-5.7


【解决方案1】:

我还不能发表评论,很抱歉发布为答案。

尝试从您的应用目录运行php -i || grep 'memcached'

如果您正在运行 vagrant,请尝试 vagrant ssh 然后 php -i || grep 'memcached'

您也可以(如下所示)将phpinfo(); 添加到您的routes/web.php 顶部(在<? 下方),当您尝试在浏览器中加载您的网站时,这应该会显示您的php 信息。

这将提示您是否已安装和加载 memcached。

【讨论】:

  • 请注意,CLI 和网络服务器可能有完全不同的php -i 输出。最好在 Laravel 应用程序中的路线上使用phpinfo(),这样你就可以确定你得到了正确的路线。
猜你喜欢
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2019-06-03
  • 2019-04-30
  • 2020-09-20
  • 1970-01-01
  • 2019-05-18
  • 2020-01-09
相关资源
最近更新 更多