Comment modifier les variables dans le .env fichier dynamiquement dans Laravel?
Je veux créer un Laravel application web qui permet à un utilisateur admin pour modifier certaines variables(telles que les identifiants de base de données) dans le .fichier de configuration en utilisant le web, système de back-office. Mais comment puis-je enregistrer les modifications?
OriginalL'auteur Joshua Leung | 2015-08-31
Vous devez vous connecter pour publier un commentaire.
Il n'est pas intégré dans la façon de le faire. Si vous voulez vraiment changer le contenu de la
.env
fichier, vous devez utiliser une sorte de chaîne de remplacer en combinaison avec PHP du fichier méthodes d'écriture. Pour un peu d'inspiration, vous devriez jeter un oeil à lakey:generate
commande: KeyGenerateCommand.php:Après le chemin d'accès au fichier est construit et l'existence est cochée, la commande remplace simplement
APP_KEY=[current app key]
avecAPP_KEY=[new app key]
. Vous devriez être en mesure de faire la même chaîne de remplacement avec d'autres variables.Dernier mais non le moindre, je voulais juste dire qu'il pourrait n'est pas la meilleure idée pour permettre aux utilisateurs de changer la .fichier env. Pour la plupart des paramètres personnalisés, je recommanderais de les stocker dans la base de données, cependant c'est évidemment un problème si le paramètre lui-même est nécessaire pour se connecter à la base de données.
OriginalL'auteur lukasgeiter
Mise à jour de Erick réponse à l'examen de
$old
valeurs couvrant sting, bool et les valeurs null.OriginalL'auteur Phil
Encore une autre mise en œuvre, dans le cas où vous avez quelque chose comme:
A = B #ceci est une entrée valide
Dans votre .fichier env
OriginalL'auteur Daniel Camargo
J'ai eu le même problème et ont créé la fonction ci-dessous
OriginalL'auteur Erick
OriginalL'auteur Siddharth Joshi
Une autre option est d'utiliser le fichier config au lieu de changer le contenu dans
.env
fichierMettre ces tous les dans tous les fichiers de configuration nommé comme
newfile.php
à l'intérieur deconfig
dossier. Si vous avez réellement ne voulez modifier.evn
de contenu. traiter toutes les variables/élément de tableau.Et get/set controller comme ci-dessous
OriginalL'auteur C2486
Étendre sur lukasgeiter et de l'autre la réponse ci-dessus, en utilisant les regex pour correspondre à la
.env
serait mieux , car contrairement àapp.key
, la variable à mettre en.env
peut ne pas être dans la config.Ci-dessous le code que j'ai utilisé lors de l'expérimentation sur la coutume artisan de commande. Ce code génère une clé pour XChaCha de chiffrement (
XCHACHA_KEY=?????
):À l'aide de
preg_match()
permet la clé d'origine pour être récupérées en tant que nécessaire, aussi permet à la clé pour être changé, même si la valeur réelle n'est pas connue.OriginalL'auteur R. Wang