Rufen Sie den Umgebungswert im Controller ab

Lesezeit: 1 Minute

Benutzer-Avatar
nielsv

In meiner .env-Datei habe ich Folgendes:

IMAP_HOSTNAME_TEST=imap.gmail.com
[email protected]
IMAP_PASSWORD_TEST=mypw

Jetzt möchte ich sie in meinem Controller verwenden. Ich habe das versucht, aber ohne Ergebnis:

$hostname = config('IMAP_HOSTNAME_TEST');

Die Variable $hostname ist gleich null. Wie kann ich diese Konfigurationsvariablen in meiner Steuerung verwenden?

  • Mögliches Duplikat von Laravel 4: Wie bekomme ich den Umgebungswert?

    – Narendrasingh Sisodia

    14. Dezember 2015 um 9:16 Uhr

Benutzer-Avatar
Chetan Ameta

Versuchen Sie es mit:

<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>

  • somedefaultvalue kann ein beliebiger Standardwert sein env Existiert nicht.

    – Chetan Ameta

    14. Dezember 2015 um 9:34 Uhr

  • Verwenden env() kann zu unerwarteten Problemen führen, siehe Grants Antwort auf diese Frage – stackoverflow.com/questions/34263107/….

    – Steve

    30. Januar 2019 um 12:16 Uhr


  • Funktioniert nicht für Laravel 5.5. Bitte gehen Sie nach unten, um eine Antwort von Masum Ahmed Sarkar zu finden

    – Hari Harker

    9. Juli 2019 um 8:13 Uhr

  • Fügen Sie eine reduzierte Form davon in der Datei config/app.php in Laravel 8^ hinzu und es wird funktionieren. 'hostname' = env('IMAP_HOSTNAME_TEST');

    – Stefan

    8. Dezember 2020 um 12:31 Uhr


Benutzer-Avatar
Masum Ahmed Sarkar

Es funktioniert nicht in Laravel 5.3+, wenn Sie versuchen möchten, auf den Wert vom Controller wie unten zuzugreifen. Es gibt immer null zurück

<?php

    $value = env('MY_VALUE', 'default_value');

LÖSUNG: Stattdessen müssen Sie eine Datei im Konfigurationsordner erstellen, sagen wir values.php, und dann den Code wie unten schreiben

Datei Werte.php

Then access the value in your controller with the following code

<?php

    $value = \Config::get('values.myvalue')

Where "values" is the filename followed by the key "myvalue".

  • Not sure why this was downvoted... It's the correct answer (mostly) for L5.3+. But using your example filename of values.php, you'd actually reference it in the controller as $value = config('values.myvalue');

    – Drew Hammond

    Mar 11, 2018 at 21:00

  • Don't forget to php artisan config:cache to commit config changes.

    – Grant

    Apr 29, 2018 at 13:27

user avatar
Grant

To simplify: Only configuration files can access environment variables - and then pass them on.

Step 1.) Add your variable to your .env file, for example,

EXAMPLE_URL="http://google.com"

Step 2.) Create a new file inside of the config folder, with any name, for example,

config/example.php

Step 3.) Inside of this new file, I add an array being returned, containing that environment variable.

<?php
return [
  'url' => env('EXAMPLE_URL')
];

Schritt 4.) Da ich es „Beispiel“ genannt habe, ist meine Konfiguration „Namespace“ jetzt Beispiel. Jetzt kann ich in meinem Controller auf diese Variable zugreifen mit:

$url = \config('example.url');

Tipp - Wenn Sie hinzufügen use Config; Oben auf Ihrem Controller benötigen Sie keinen umgekehrten Schrägstrich (der den Root-Namespace bezeichnet). Zum Beispiel,

namespace App\Http\Controllers;
use Config; // Added this line

class ExampleController extends Controller
{
    public function url() {
        return config('example.url');
    }
}

Übernehmen Sie abschließend die Änderungen:

php artisan config:cache

--- WICHTIG --- Denken Sie daran, einzutreten php artisan config:cache in die Konsole, sobald Sie Ihre example.php-Datei erstellt haben. Konfigurationsdateien und Variablen werden zwischengespeichert, wenn Sie also Änderungen vornehmen, müssen Sie diesen Cache leeren - das gleiche gilt für die .env Datei wird geändert / hinzugefügt.

  • php artisan config:cache bringt meine Anwendung zum Absturz

    – Felipe Castillo

    31. Mai 2019 um 15:32 Uhr

  • @FelipeCastillo bedeutet, dass Ihre Anwendung ein Problem in ihrer Konfiguration hat - weil dieser Befehl nur den Cache leert

    - Gewähren

    4. Juni 2019 um 10:31 Uhr

  • config() ist die Hilfsfunktion und benötigt die nicht use Config;. Mit der use-Anweisung können Sie den Alias ​​verwenden Config zum Illuminate\Support\Facades\Config::class wie zum Beispiel: Config::get('example.url')

    – Ametad

    22. September 2020 um 12:40 Uhr

  • @petermortensen @Grant, das ist eine großartige Antwort. Meine Frage ist, warum das funktioniert, anstatt nur Laravels zu verwenden env() Hilfsmethode?

    – CodeConnoisseur

    2. Dezember 2020 um 16:49 Uhr

  • @PA-GW Der Helfer env() greift nur auf die (häufig sicherheitskritischen) Umgebungsvariablen zu, die in der .env-Datei gespeichert sind. Sie werden in meiner Eröffnungszeile bemerken, dass ich erwähnt habe, dass (zumindest zum Zeitpunkt der Beantwortung dieser Frage) Konfigurationsdateien die einzigen Dateien sind, die auf diese sensiblen Super-Globals zugreifen können.

    - Gewähren

    3. Dezember 2020 um 13:24 Uhr

Benutzer-Avatar
Basheer Kharoti

Alle in aufgeführten Variablen .env Datei wird in die geladen $_ENV PHP superglobal, wenn Ihre Anwendung eine Anfrage erhält. Schauen Sie sich die Laravel-Konfigurationsseite an.

$_ENV['yourkeyhere'];

Benutzer-Avatar
Zarkys Salas

Sie können dieses Format verwenden (getestet auf Laravel 5.5). In meinem Fall habe ich es verwendet, um die Daten von Datenbankverbindungen abzurufen und auf dem Controller zu verwenden:

$User = env('DB_USERNAMEchild','');
$Pass = env('DB_PASSWORDchild','');

Der zweite Parameter kann null sein oder einen beliebigen Standardwert festlegen, falls DB_USERNAMEchild null ist.

Ihre .env-Datei kann dieselbe sein:

DB_HOST=localhost
DB_DATABASE=FATHERBD
DB_USERNAME=root
DB_PASSWORD=password

DB_DATABASEchild=ZTEST
DB_USERNAMEchild=root
DB_PASSWORDchild=passwordofchild

  • Wo hast du diesen Code platziert, config/app.php oder der Controller/Ansicht? Das hat bei mir funktioniert Laravel 5.2 aber scheint nicht an Laravel 5.3+. Da Sie angeben Laravel 5.5muss ich etwas falsch machen?

    – Wouter Vanherck

    14. Dezember 2018 um 10:45 Uhr


  • Ich habe diesen Code auf app/Http/ExampleController.php platziert

    – Zarkys Salas

    30. Mai 2019 um 5:33 Uhr

Benutzer-Avatar
Peter Mortensen

Es ist eine bessere Idee, Ihre Konfigurationsvariablen in einer Konfigurationsdatei abzulegen.

In Ihrem Fall würde ich vorschlagen, Ihre Variablen einzugeben config/mail.php wie:

'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')

Und beziehen Sie sich auf sie durch

config('mail.imap_hostname')

Es versucht zuerst, den Wert der Konfigurationsvariablen in der zu erhalten .env Datei und wenn es den Variablenwert nicht in der finden konnte .env file, erhält es den Variablenwert aus der Datei config/mail.php.

  • Wo hast du diesen Code platziert, config/app.php oder der Controller/Ansicht? Das hat bei mir funktioniert Laravel 5.2 aber scheint nicht an Laravel 5.3+. Da Sie angeben Laravel 5.5muss ich etwas falsch machen?

    – Wouter Vanherck

    14. Dezember 2018 um 10:45 Uhr


  • Ich habe diesen Code auf app/Http/ExampleController.php platziert

    – Zarkys Salas

    30. Mai 2019 um 5:33 Uhr

Benutzer-Avatar
MacTavish

Wie @Rajib betonte, können Sie nicht mit auf Ihre Umgebungsvariablen zugreifen config('myVariable')

  1. Sie müssen die Variable zuerst zur .env-Datei hinzufügen.
  2. Fügen Sie die Variable zu einer Konfigurationsdatei hinzu in config Verzeichnis. Ich füge normalerweise hinzu config/app.php
  3. Sobald Sie fertig sind, werden Sie gerne darauf zugreifen Config::get('fileWhichContainsVariable.Variable'); Verwendung der Config Fassade

Wahrscheinlich müssen Sie den Konfigurationscache mit löschen php artisan config:clear
UND Sie müssen auch den Server neu starten.

1354880cookie-checkRufen Sie den Umgebungswert im Controller ab

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy