Laravel 未找到 Lumen Memcached

Laravel Lumen Memcached not found

好的,我刚开始使用 Lumen,我正在尝试使用 Auth,但是调用 Auth::check 或 Auth 的任何其他功能.. 会导致以下错误 致命错误:在第 52 行的 vendor\illuminate\cache\MemcachedConnector.php 中找不到 Class 'Memcached'。 我不想使用以前从未使用过的 Memcached。

我在 .env 文件中禁用它并设置 CACHE_DRIVERSESSION_DRIVER 到数组,但仍然显示相同的错误。

我决定不再使用 Auth 并使用 sessions/tokens 手动处理我的身份验证,但启用 MiddleWare StartSession 会导致相同的错误。

$app->middleware([
 // 'Illuminate\Cookie\Middleware\EncryptCookies',
 // 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
  'Illuminate\Session\Middleware\StartSession',
 // 'Illuminate\View\Middleware\ShareErrorsFromSession',
 // 'Laravel\Lumen\Http\Middleware\VerifyCsrfToken',
]);

如果有人能真正帮助我,我将非常高兴

编辑

深入框架之后 我在 SessionManager Class 中硬编码了会话驱动程序名称 在方法 getSessionConfig

public function getSessionConfig()
{
    $this->setDefaultDriver("cookie");//I added this line
    return $this->app['config']['session'];
}

它虽然有效,但不是一个好的做事方式。 没有配置文件,我相信所有配置都写在 .env 文件中,但我真的不知道为什么 session_driver 和 cache_driver 默认为即使在 .env 然后 运行 composer dump-autoload ... 流明 :(

编辑 这是我的 .env 文件

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomKey!!!

APP_LOCALE=en
APP_FALLBACK_LOCALE=en

DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=

CACHE_DRIVER=array
SESSION_DRIVER=cookie
QUEUE_DRIVER=database

我的 bootsrap/app.php

中已经取消注释了这一行
 Dotenv::load(__DIR__.'/../');

我的数据库配置完美运行,因此加载了 .env 文件 还不错。

您可能需要重新启动服务器,尤其是在您使用 php artisan serve 时。

Lumen 似乎没有接收到每个请求的 .env 更改。

我遇到了完全相同的问题 - 尝试使用文件缓存,但收到有关 Memcached 的错误 - 重新启动服务器会重新加载 .env 文件。

确保不要被未加载的 .env 文件搞砸,默认情况下它在 Lumen 中被注释掉了。因此,如果您在 .env 中指定不同的缓存驱动程序,请执行以下操作。

Note: If you are using the .env file to configure your application, don't forget to uncomment the Dotenv::load() method in your bootstrap/app.php file.

来源:http://lumen.laravel.com/docs/cache

我现在遇到了类似的问题,我无法找到它,但我的猜测是它与默认配置存储在 vendor/laravel/lumen-framework/config 文件夹中的事实有关, DotEnv::$inmutable 设置和 artisan serve 服务器。

对我有用的解决方案是:

  1. bootstrap/app.php中加入: Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable();

  2. .env文件中,将所有配置设置为"basic drivers"(数组,文件)即使你不去使用它们,因为你 w

我今天在这个问题上花了 3 个小时。借助本主题中的 ,我找到了解决方案。很简单的!希望不会影响到我以后的发展。

只是为了它,在.env文件中:

CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array

好的,我进行了 UPDATE 因为我遇到了一个关于会话的新问题。事实上,当你设置前面的参数时,你的会话不会持久,就像在 documentation 中说的那样: array - sessions will be stored in a simple PHP array and will not be persisted across requests.

所以我必须更改它,总是在 .env 这样的文件中:

SESSION_DRIVER=cookie

使用 var_dump(Session::all()); 我现在可以看到会话的全部值

在我的例子中,我在 .env 文件中添加了 Add CACHE_DRIVER=array
然后

Dotenv::load(__DIR__.'/../');

在我的 bootstrap/app.php.env 文件中开始工作。

对我来说,问题是我使用了 homestead 存储库的 php-7 分支,它没有 PHP memcached 就绪。

检查是否安装了memcached,如果没有安装运行:

apt-get install php5-memcached

在 .env 文件中替换

#This line:- 
  CACHE_DRIVER = memcached

#With this:- 
   CACHE_DRIVER = array

在您的 .env 文件中,您也可以使用 CACHE_DRIVER=file 而不是 CACHE_DRIVER=memcached

这个问题在我安装这个包时解决了,所以至少尝试一下

首先我尝试了这个并且它工作正常

CACHE_DRIVER = array 

但转念一想什么是memcached

然后我尝试了这个并且它在不更改驱动程序的情况下工作正常memcached

apt-get install php-memcached 

yum 包管理器或亚马逊 Linux。

yum install php-memcached -y

如果您安装了新的 lumen, 您必须将 .env.example 重命名为 .env 。所以它可以读取您的配置!

如果您的 .env 文件属于另一个用户而不是尝试 运行 artisan 命令的用户,就会发生这种情况。