Laravel Lumen Memcached non trouvé
Ok, je viens juste de commencer avec Lumen et j'essaye d'utiliser L'Auth, mais un appel à Auth::check ou toute autre fonction D'Auth.. conduit à l'Erreur ci-dessous erreur fatale: Classe 'Memcached' introuvable dans vendorilluminatecacheMemcachedConnector.php on line 52. Je ne veux pas utiliser Memcached qui ne l'a jamais utilisé avant.
j'ai désactivé dans le .env le fichier et définissez CACHE_DRIVER et SESSION_DRIVER array, mais encore affiche le même message d'erreur.
j'ai décidé de ne plus utiliser Auth et de gérer manuellement mon authentification avec des sessions/tokens, mais en activant les résultats de session de MiddleWare pour la même erreur.
$app->middleware([
// 'IlluminateCookieMiddlewareEncryptCookies',
// 'IlluminateCookieMiddlewareAddQueuedCookiesToResponse',
'IlluminateSessionMiddlewareStartSession',
// 'IlluminateViewMiddlewareShareErrorsFromSession',
// 'LaravelLumenHttpMiddlewareVerifyCsrfToken',
]);
s'il vous Plaît je serais tellement heureux si quelqu'un peut vraiment m'aider ici
EDIT
après s'être un peu enfoncé dans le cadre
J'ai codé dur le nom du pilote de session dans le SessionManager
Classe
dans la méthode getSessionConfig
public function getSessionConfig()
{
$this->setDefaultDriver("cookie");//I added this line
return $this->app['config']['session'];
}
Cela fonctionne bien, mais pas une bonne façon de faire les choses.
Il n'y a pas de fichier de configuration, je crois que toutes les configurations sont écrites en .env fichier, mais je ne sais vraiment pas pourquoi le session_driver et le cache_driver est par défaut sur memecached même après l'avoir modifié dans le .env et puis a couru composer dump-autoload
... Lumen : (
EDIT C'est mon .env le fichier
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
j'ai déjà cette ligne décommenté dans mon bootsrap/app.php
Dotenv::load(__DIR__.'/../');
la configuration de ma base de données fonctionne parfaitement .fichier de configuration est chargé tout à fait très bien.
12 réponses
Vous devrez peut-être redémarrer votre serveur, surtout si vous utilisez php artisan serve
.
Lumen ne semble pas ramasser .env
modifications par requête.
j'ai eu exactement le même problème - j'ai essayé d'utiliser le cache de fichiers, mais j'ai reçu des erreurs concernant Memcached - redémarrer le serveur recharge le .env
fichier.
j'ai passé 3 heures sur ce problème aujourd'hui. Avec l'aide de le poste de demve dans cette rubrique, j'ai trouvé la solution. Très simple ! J'espère que ça ne m'affectera pas plus tard dans mon développement.
, dans le .env
fichier :
CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array
Ok, je fais un UPDATE parce que j'ai été confronté à un nouveau problème de session. En fait, lorsque vous définissez les paramètres précédents, votre session ne sera pas persistant, comme dit dans le documentation:array - sessions will be stored in a simple PHP array and will not be persisted across requests.
donc j'ai changé, toujours en .env
le fichier comme ça :
SESSION_DRIVER=cookie
Avec un var_dump(Session::all());
je peux maintenant voir l'ensemble des valeurs de ma session
.remplacer le fichier env
#This line:-
CACHE_DRIVER = memcached
#With this:-
CACHE_DRIVER = array
assurez-vous de ne pas se faire attraper par votre .le fichier env n'est pas chargé, qui par défaut est commenté dans Lumen. Donc, si vous spécifiez un pilote de cache différent dans votre .env, procédez de la manière suivante.
Note: Si vous utilisez le .pour configurer votre application, n'oubliez pas de décompresser la méthode Dotenv::load() dans votre bootstrap/app.fichier php.
dans votre .env
file, vous pouvez aussi utiliser CACHE_DRIVER=file
au lieu de CACHE_DRIVER=memcached
Dans mon cas, j'ai ajouté Ajouter CACHE_DRIVER=array
.fichier de configuration
Puis
Dotenv::load(__DIR__.'/../');
dans mon bootstrap/app.php
et .env
le fichier a commencé à travailler.
pour moi, le problème est que j'ai utilisé la branche php-7 de homestead repository qui n'a pas PHP memcached prêt.
ce problème a été résolu lorsque j'ai installé ce paquet alors essayez au moins
d'Abord j'ai essayé et ça fonctionne très bien
CACHE_DRIVER = array
mais alors pensé à ce qui est memcached
alors j'ai essayé ceci et cela fonctionne très bien sans changer de pilote memcached
apt-get install php-memcached
j'ai eu un problème similaire maintenant, je ne pouvais pas le retrouver mais je pense que c'est lié au fait que les configurations par défaut sont stockées dans le vendor/laravel/lumen-framework/config
dossier DotEnv::$inmutable
et artisan serve
le serveur.
La solution qui a fonctionné pour moi a été:
Ajouter
bootstrap/app.php
le code suivant:Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable();
dans le
.env
fichier, définissez toute la configuration à "pilotes de base" " (tableau, fichier) même si vous n'allez pas utiliser, parce que vous w
cela se produit si votre .le fichier env appartient à un autre utilisateur que celui qui essaie d'exécuter la commande artisan.
Vérifier si memcached
est installé, si ce n'est de l'installer en exécutant:
apt-get install php5-memcached
si vous avez une nouvelle installation lumen,
vous devez renommer .env.example
.env
. Pour qu'il puisse lire vos configurations!