Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel Lumen Memcached not found

Ok, I just started with Lumen and I'm trying to use the Auth, but a call to either Auth::check or any other function of Auth.. leads to the below Error Fatal error: Class 'Memcached' not found in vendor\illuminate\cache\MemcachedConnector.php on line 52. I don't want to use Memcached never used it before.

I disabled it in the .env file and set the CACHE_DRIVER and SESSION_DRIVER to array, but still shows the same error.

I decided not to use Auth again and to manually handle my authetication with sessions/tokens, but enabling the MiddleWare StartSession results to the same error.

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

Please I'd be so glad if anyone can really help me out here

EDIT

After going A little Deep in the framework I Hard Coded the session driver name in the SessionManager Class within the method getSessionConfig

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

It works though but not a good way of doing things. There is no config file, i believe all configurations are written in .env file, but i really don't know why the session_driver and cache_driver is defaulted to memecached even after changing it in the .env and then ran composer dump-autoload ... Lumen :(

EDIT This is my .env file

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

I already have this line uncommented in my bootsrap/app.php

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

My DataBase configuration works perfectly so the .env file is loaded quite alright.

like image 493
Paul Okeke Avatar asked Apr 22 '15 05:04

Paul Okeke


4 Answers

I spent 3 hours on this problem today. With the help of the post of demve in this topic, I found the solution. Very simple! I hope it won't affect me later in my development.

Just to it, in the .env file :

CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array

Ok, I make an UPDATE because I was faced with a new problem about the session. In fact, when you set the previous parameters, your session won't be persistent, like said in the documentation: array - sessions will be stored in a simple PHP array and will not be persisted across requests.

So I have to change it, always in .env a file like that :

SESSION_DRIVER=cookie

With a var_dump(Session::all()); I now can see the whole values of my session

like image 157
w3spi Avatar answered Nov 02 '22 04:11

w3spi


You may need to restart your server, especially if you're using php artisan serve.

Lumen doesn't appear to pick up .env changes per-request.

I had exactly the same issue - trying to use file cache, but received errors regarding Memcached - restarting the server reloads the .env file.

like image 20
Alex Osborn Avatar answered Nov 02 '22 03:11

Alex Osborn


This issue resolved when i installed this package so try at least

First i tried this and it works fine

CACHE_DRIVER = array 

but then thought about what is memcached

Then i tried this and it works fine without changing driver memcached

apt-get install php-memcached 

yum package manager or in Amazon Linux.

yum install php-memcached -y
like image 13
Ajay Kumar Avatar answered Nov 02 '22 05:11

Ajay Kumar


In .env file replace

#This line:- 
  CACHE_DRIVER = memcached

#With this:- 
   CACHE_DRIVER = array
like image 8
Manoj Thapliyal Avatar answered Nov 02 '22 05:11

Manoj Thapliyal