J'ai installé phpdotenv depuis vlucas en utilisant composer sur un projet codeigniter.
J'ai également ajouté le crochet que je suis un peu confus si nécessaire pour la v3.3
$hook['pre_system'] = function() {
$dotenv = new Dotenv\Dotenv(APPPATH);
$dotenv->load();
};
Si je n'ajoute pas ce crochet, je ne peux pas récupérer les variables de mon fichier .env. Si je l'ajoute, j'obtiens cette erreur:
Message: L'argument 1 transmis à Dotenv\Dotenv :: __ construct () doit être une instance de Dotenv\Loader, chaîne donnée, appelée dans C:\xampp\htdocs\test\application\config\hooks.php à la ligne 15
Nom de fichier: C:\xampp\htdocs\test\vendor\vlucas\phpdotenv\src\Dotenv.php
On dirait que la classe se charge mais elle n'aime pas le paramètre "APPPATH" mais toute la documentation que j'ai trouvée l'utilise.
Toute aide appréciée
Ok donc changer ce crochet semble fonctionner, je ne suis pas sûr que ce soit la bonne approche mais creuser dans le code de la bibliothèque semble ok.
$hook['pre_system'] = function() {
$dotenv = Dotenv\Dotenv::create(__DIR__);
$dotenv->load();
}
Si cela ne va pas pour quelque raison que ce soit, faites-le moi savoir. Merci
Dotenv doit être une instance de Dotenv\Loader
En fait, vous ne suivez pas la documentation de la mise à niveau Laravel de n'importe quelle version à 5.8, j'ai trouvé une solution après quelques heures de recherche. Enfin j'ai trouvé la solution. Il vous suffit de remplacer ce code dans votre environnement fichier.
$env = $app->detectEnvironment(function(){
$environmentPath = __DIR__.'/../.env';
$setEnv = trim(file_get_contents($environmentPath));
if (file_exists($environmentPath))
{
putenv('APP_ENV='.$setEnv);
if (getenv('APP_ENV') && file_exists(__DIR__.'/../.' .getenv('APP_ENV') .'.env')) {
$dotenv = Dotenv\Dotenv::create(__DIR__.'/../', '.'.getenv('APP_ENV').'.env');
$dotenv->overload();
}
}});
Voici un lien où vous pouvez vérifier en détail comment utiliser plusieurs fichiers env dans laravel 5.8. Lien de référence
Profitez du codage. . . !!!
Ma configuration composer.json
"require": {
"php" : "^7.2",
"laravel/Lumen-framework" : "^6.0",
"vlucas/phpdotenv" : "~3.3"
}
Voici la solution qui a fonctionné pour moi
Aller à bootstrap/app.php
, mettez à jour le code suivant
try{
$dotenv = Dotenv\Dotenv::create(dirname(__DIR__));
$dotenv->load();
}catch(Dotenv\Exception\InvalidPathException $e){
$e->getMessage();
}