Laravel Lumen Memcached not found
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.
Paul Okeke
Updated on May 15, 2021Comments
-
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 methodgetSessionConfig
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 over 8 yearsYeah, this happened to me. You'll have to install the php7 branch of memcached: stackoverflow.com/questions/33073141/…
-
Admin over 8 yearsThe term 'solution' is misleading. This is a workaround. You didn't fix memcached, you just use something else.
-
kair almost 8 yearsThis seems to work in Lumen 5.2! Can you provide additional info for this solution? Why does this work? What does makeMuteable() do?
-
demve almost 8 yearsMakeMutable set the Dotenv object to override its previous values.
-
user269867 about 7 yearsand you can still use memcache ?
-
Manoj Thapliyal almost 7 years@user269867 no please comment #CACHE_DRIVER = memcached
-
ankush981 almost 7 yearsThis worked for me! I'm in a shared hosting environment and restarting is not an option. :D
-
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 over 6 yearsWell 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 over 6 yearsthis is an answer as it worked for me. - easy to forgot to do this.
-
Boyd Hemphill about 6 yearsThis worked for me in the context of "I am just trying to get Lumen going for the first time."
-
Richard Fu over 3 yearsThis 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 about 3 yearswow, 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