Laravel Lumen Memcached not found

48,507

Solution 1

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.

Solution 2

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

Solution 3

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

Solution 4

In .env file replace

#This line:- 
  CACHE_DRIVER = memcached

#With this:- 
   CACHE_DRIVER = array

Solution 5

Make sure not to get caught out by your .env file not being loaded, which by default it's commented out in Lumen. So if you are specifying a different cache driver in your .env, do the following.

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.

Source: http://lumen.laravel.com/docs/cache

Share:
48,507
Paul Okeke
Author by

Paul Okeke

Updated on May 15, 2021

Comments

  • Paul Okeke
    Paul Okeke about 3 years

    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.

  • prograhammer
    prograhammer over 8 years
    Yeah, this happened to me. You'll have to install the php7 branch of memcached: stackoverflow.com/questions/33073141/…
  • Admin
    Admin over 8 years
    The term 'solution' is misleading. This is a workaround. You didn't fix memcached, you just use something else.
  • kair
    kair almost 8 years
    This seems to work in Lumen 5.2! Can you provide additional info for this solution? Why does this work? What does makeMuteable() do?
  • demve
    demve almost 8 years
    MakeMutable set the Dotenv object to override its previous values.
  • user269867
    user269867 about 7 years
    and you can still use memcache ?
  • Manoj Thapliyal
    Manoj Thapliyal almost 7 years
    @user269867 no please comment #CACHE_DRIVER = memcached
  • ankush981
    ankush981 almost 7 years
    This worked for me! I'm in a shared hosting environment and restarting is not an option. :D
  • Masoud
    Masoud over 6 years
    @AnandPandey it works for me! Consider the "best answer" => it can not read or load .env file. Newbies allways forget to rename this file! This was one of the answers! I think you are a newbie too, that knows nothing about laravel!!!
  • Anand Pandey
    Anand Pandey over 6 years
    Well i dont want to argue with you. Yes i am a newbie and integrate the lumen with the swagger and twinfield. Its not the solution you give i already read in doc.
  • weaveoftheride
    weaveoftheride over 6 years
    this is an answer as it worked for me. - easy to forgot to do this.
  • Boyd Hemphill
    Boyd Hemphill about 6 years
    This worked for me in the context of "I am just trying to get Lumen going for the first time."
  • Richard Fu
    Richard Fu over 3 years
    This indeed should be the best answer, while all other answers are just work-around by using another cache driver. P.S. use yum install php-memcached -y in Amazon Linux
  • Vítor Campos
    Vítor Campos about 3 years
    wow, this happened to me right after doing an apt install upgrade and it turns out that the memcached from php7.3 had been uninstalled for some unknown reason. I tried this solution and recovered the site