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.
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.
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
Dans le fichier .env remplacer
#This line:-
CACHE_DRIVER = memcached
#With this:-
CACHE_DRIVER = array
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.
dans votre .env
fichier, vous pouvez également utiliser CACHE_DRIVER=file
au lieu de CACHE_DRIVER=memcached
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
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.
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.
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:
Ajoutez bootstrap/app.php
ce qui suit: Dotenv::makeMutable(); Dotenv::load(__DIR__.'/../'); Dotenv::makeImmutable();
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