没找到Laravel Lumen Memcached

Pau*_*eke 45 php memcached laravel lumen

好吧,我刚开始使用Lumen并且我正在尝试使用Auth,但是调用Auth :: check或Auth的任何其他函数..导致以下错误 致命错误:在供应商中找不到类'Memcached'第52行的\ illuminate\cache\MemcachedConnector.php.我不想使用之前从未使用过的Memcached.

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

我决定不再使用Auth并使用会话/令牌手动处理我的身份验证,但启用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',
]);
Run Code Online (Sandbox Code Playgroud)

如果有人真的可以帮助我,我会很高兴

编辑

在框架中进行了一点深入之后,I Hard SessionManager在方法中的类中编写了会话驱动程序名称getSessionConfig

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

它虽然有效,但不是一种好的做事方式.没有配置文件,我相信所有的配置都写在.ENV文件,但我真的不知道为什么session_driver和cache_driver默认为memecached即使在改变之后.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
Run Code Online (Sandbox Code Playgroud)

我已经在我的bootsrap/app.php中取消注释了这一行

 Dotenv::load(__DIR__.'/../');
Run Code Online (Sandbox Code Playgroud)

我的DataBase配置工作正常,因此.env文件加载得非常好.

Zl3*_*l3n 47

我今天花了3个小时解决这个问题.在本主题的demve帖子的帮助下,我找到了解决方案.非常简单 !我希望以后在我的发展中不会影响我.

就在它,在.env文件中:

CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array
Run Code Online (Sandbox Code Playgroud)

好的,我进行了更新,因为我遇到了一个关于会话的新问题.实际上,当您设置上一个参数时,您的会话将不会持久,如文档中所述:array - sessions will be stored in a simple PHP array and will not be persisted across requests.

所以我改变它,总是在.env文件中:

SESSION_DRIVER=cookie
Run Code Online (Sandbox Code Playgroud)

随着var_dump(Session::all());现在我可以看到我的会话的整个价值

  • "解决方案"一词具有误导性.这是一种解决方法.你没有修复memcached,你只需要使用其他东西. (9认同)

Ale*_*orn 19

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

Lumen似乎没有.env按照请求获取更改.

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


Aja*_*mar 11

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

首先我试过这个,它工作正常

CACHE_DRIVER = array 
Run Code Online (Sandbox Code Playgroud)

但后来想到了什么是 memcached

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

apt-get install php-memcached 
Run Code Online (Sandbox Code Playgroud)

yum 包管理器或 Amazon Linux。

yum install php-memcached -y
Run Code Online (Sandbox Code Playgroud)

  • 这确实应该是最好的答案,而所有其他答案只是通过使用另一个缓存驱动程序来解决。PS 在 Amazon Linux 中使用 `yum install php-memcached -y` (2认同)

小智 10

在.env文件替换

#This line:- 
  CACHE_DRIVER = memcached

#With this:- 
   CACHE_DRIVER = array
Run Code Online (Sandbox Code Playgroud)


dav*_*ght 7

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

注意:如果您使用.env文件配置应用程序,请不要忘记在bootstrap/app.php文件中取消注释Dotenv :: load()方法.

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