Reputation: 1414
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.
Upvotes: 51
Views: 51933
Reputation: 1352
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
Upvotes: 14
Reputation: 7853
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
Upvotes: 46
Reputation: 89
This happens if your .env file is owned by another user than the one trying to run the artisan command.
Upvotes: -1
Reputation: 454
If you have a new lumen installation,
you must rename .env.example
to .env
. So it can read your configurations!
Upvotes: -1
Reputation: 1650
in your .env
file, you can also use CACHE_DRIVER=file
instead of CACHE_DRIVER=memcached
Upvotes: 4
Reputation: 577
In .env file replace
#This line:-
CACHE_DRIVER = memcached
#With this:-
CACHE_DRIVER = array
Upvotes: 8
Reputation: 9
Check if memcached
is installed, if not install it by running:
apt-get install php5-memcached
Upvotes: -2
Reputation: 271
For me, the issue was that I used the php-7 branch of homestead repository which does not have PHP memcached ready.
Upvotes: 2
Reputation: 3844
In my case i added Add CACHE_DRIVER=array
in .env file
Then
Dotenv::load(__DIR__.'/../');
in my bootstrap/app.php
and the .env
file started working.
Upvotes: 2
Reputation: 216
I had a similar problem now, I couldn't track it down but my guess is that it has something to do with the fact that the defaults configurations are stored in the vendor/laravel/lumen-framework/config
folder, the DotEnv::$inmutable
setting and the artisan serve
server.
The solution that worked for me was:
Add in bootstrap/app.php
the following:
Dotenv::makeMutable();
Dotenv::load(__DIR__.'/../');
Dotenv::makeImmutable();
in the .env
file, set all the configuration to "basic drivers" (array, file) even if you are not going to use them, because you w
Upvotes: 1
Reputation: 462
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
Upvotes: 7
Reputation: 9851
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.
Upvotes: 20