web-dev-qa-db-fra.com

Laravel Lumen Memcached non trouvé

Ok, je viens de commencer avec Lumen et j'essaie d'utiliser Auth, mais un appel à Auth :: check ou à toute autre fonction de Auth .. conduit à l'erreur ci-dessous Erreur fatale: Class 'Memcached' introuvable dans le fournisseur\illuminate\cache\MemcachedConnector.php à la ligne 52. Je ne veux pas utiliser Memcached jamais utilisé auparavant.

Je l'ai désactivé dans le fichier . Env et définir les CACHE_DRIVER et SESSION_DRIVER sur array, mais affiche toujours la même erreur.

J'ai décidé de ne plus utiliser Auth et de gérer manuellement mon authentification à l'aide de sessions/jetons, mais l'activation de MiddleWare StartSession a le même résultat.

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

S'il vous plaît, je serais si heureux si quelqu'un peut vraiment m'aider ici

EDIT

Après être allé un peu plus loin dans le cadre, j'ai codé en dur le nom du pilote de session dans la classe SessionManager de la méthode getSessionConfig

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

Cela fonctionne mais ce n’est pas un bon moyen de faire les choses. Il n'y a pas de fichier de configuration, je pense que toutes les configurations sont écrites dans le fichier . Env, mais je ne sais vraiment pas pourquoi les paramètres session_driver et cache_driver sont définis par défaut sur memecached même après l'avoir modifié dans le .env puis a couru composer dump-autoload ... Lumen :(

EDIT Ceci est mon fichier . env

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 commentée dans mes bootsrap/app.php

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

La configuration de ma base de données fonctionne parfaitement, le fichier .env est donc chargé correctement.

45
Paul Okeke

Vous devrez peut-être redémarrer votre serveur, surtout si vous utilisez php artisan serve.

Lumen ne semble pas capter .env changements par demande.

J'ai eu exactement le même problème - essayer d'utiliser le cache de fichiers, mais j'ai reçu des erreurs concernant Memcached - le redémarrage du serveur recharge le .env fichier.

19
Alex Osborn

J'ai passé 3 heures sur ce problème aujourd'hui. Avec l'aide de le message de demve dans cette rubrique, j'ai trouvé la solution. Très simple ! J'espère que cela ne m'affectera pas plus tard dans mon développement.

Juste pour cela, dans le fichier .env:

CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array

Ok, je fais une mise à jour [~ # ~] [~ # ~] parce que je suis confronté à un nouveau problème de session. En fait, lorsque vous définissez les paramètres précédents, votre session ne sera pas persistante, comme indiqué dans la documentation : array - sessions will be stored in a simple PHP array and will not be persisted across requests.

J'ai donc le changer, toujours dans le fichier .env:

SESSION_DRIVER=cookie

Avec une var_dump(Session::all());, je peux maintenant voir toutes les valeurs de ma session

44
Zl3n

Dans le fichier .env remplacer

#This line:- 
  CACHE_DRIVER = memcached

#With this:- 
   CACHE_DRIVER = array
10
Manoj Thapliyal

Assurez-vous de ne pas être pris au dépourvu par le chargement de votre fichier .env, qui est commenté par défaut dans Lumen. Ainsi, si vous spécifiez un pilote de cache différent dans votre fichier .env, procédez comme suit.

Remarque: Si vous utilisez le fichier .env pour configurer votre application, n'oubliez pas de ne pas commenter la méthode Dotenv :: load () dans votre fichier bootstrap/app.php.

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

7
davidnknight

dans votre .env fichier, vous pouvez également utiliser CACHE_DRIVER=file au lieu de CACHE_DRIVER=memcached

4

Ce problème a été résolu lorsque j'ai installé ce paquet, alors essayez au moins.

D'abord j'ai essayé cela et ça marche bien

CACHE_DRIVER = array 

mais alors pensé à ce qui est memcached

Ensuite, j’ai essayé et cela fonctionne bien sans changer de pilote memcached

apt-get install php-memcached 
3
Ajay Kumar

Dans mon cas, j'ai ajouté Ajouter CACHE_DRIVER=array dans le fichier .env
Ensuite

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

dans mon bootstrap/app.php et le .env fichier a commencé à fonctionner.

2
Sajjad Ashraf

Pour moi, le problème était que j'ai utilisé la branche php-7 du référentiel Homestead qui n'a pas PHP memcached ready.

2
Josh LaMar

J'avais un problème similaire maintenant, je ne pouvais pas le localiser, mais je suppose que cela a quelque chose à voir avec le fait que les configurations par défaut sont stockées dans le dossier vendor/laravel/Lumen-framework/config, Le DotEnv::$inmutable et le serveur artisan serve.

La solution qui a fonctionné pour moi était:

  1. Ajoutez bootstrap/app.php ce qui suit: Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable();

  2. dans le fichier .env, définissez toute la configuration sur "pilotes de base" (tableau, fichier) même si vous n'allez pas les utiliser, car vous

1
demve