it-swarm.com.de

Laravel 5.2 liest keine Env-Datei

Nach dem Upgrade auf Laravel 5.2 werden keine Werte meiner .env-Datei gelesen. Ich habe die Upgrade-Anweisungen befolgt ; Mit Ausnahme von auth.php wurde keine meiner Konfigurationsdateien geändert. In der vorherigen Version 5.1.19 funktionierten alle einwandfrei

.env enthält Werte wie

DB_DATABASE=mydb
DB_USERNAME=myuser

config/database.php enthält

'mysql' => [
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
]

Ich erhalte diesen Fehler:

PDOException: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)

Offensichtlich nicht in meiner Env-Konfig. Dies hat Auswirkungen auf jede einzelne meiner Konfigurationsdateien, auch auf Drittanbieter wie bugsnag.

Ich habe es auch versucht

php artisan config:clear
php artisan cache:clear

Update

php artisan tinker versuchen

>>> env('DB_DATABASE')
=> null
>>> getenv('DB_DATABASE')
=> false
>>> config('database.connections.mysql.database')
=> "forge"
>>> dd($_ENV)
[]

Ich habe versucht, eine neue Version von Laravel 5.2 zu installieren. Ich habe im Grunde nur in meinen "App" -Ordner kopiert; Es sind keine zusätzlichen Composer-Pakete enthalten. Immer noch das gleiche Problem. Ich habe andere Laravel 5.2-Projekte auf demselben Server, die einwandfrei funktionieren.

48
andrewtweber

Beeindruckend. Guter Kummer Das liegt daran, dass ich einen env-Wert mit einem Leerzeichen hatte, nicht in Anführungszeichen

Diese 

SITE_NAME=My website

Zu diesem geändert

SITE_NAME="My website"

Behoben. Ich denke, das hatte mit Laravel 5.2 zu tun, das jetzt vlucas/phpdotenv von 1.1.1 auf 2.1.0 aufrüstet

33
andrewtweber

Vom offiziellen Laravel 5.2 Upgrade Notes:

Wenn Sie während der Bereitstellung den Befehl config:cache verwenden, geben Sie must muss sicherstellen, dass Sie die Funktion env nur innerhalb von .__ aufrufen. Ihre Konfigurationsdateien und nicht von irgendwo anders in Ihrem Anwendung.

Wenn Sie env aus Ihrer Anwendung heraus aufrufen, ist dies eindeutig Es wird empfohlen, der Konfiguration korrekte Konfigurationswerte hinzuzufügen Dateien und rufen stattdessen env von diesem Ort auf, sodass Sie .__ konvertieren können. Ihre env-Aufrufe an config-Aufrufe.

Referenz: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0

54
Gaurav Gupta

Wenn eine Ihrer .env-Variablen Leerzeichen enthält, stellen Sie sicher, dass Sie sie in doppelte Anführungszeichen setzen. Zum Beispiel:

SITE_NAME="My website"

Vergessen Sie nicht, den Cache vor dem Testen zu löschen:

php artisan config:cache;
php artisan config:clear;
31
benjolly1989

Ich hatte ein ähnliches Problem in meinem config/services.php und löste es mit den config clear- und optimize-Befehlen:

php artisan config:clear
php artisan optimize
19
Deric Lima

führe das aus: 

php artisan config:clear
php artisan cache:clear

dann
php artisan config:cache

11
Ganesh K

Ich habe dies in den Upgrade-Anweisungen verpasst:

Fügen Sie Ihrer app.php - Konfigurationsdatei eine env-Konfigurationsoption hinzu, die wie folgt aussieht: 'env' => env('APP_ENV', 'production')

Durch das Hinzufügen dieser Zeile wird die lokale .env - Datei korrekt eingelesen.

7
dKen

Wenn Sie den Befehl php artisan config:cache abgefeuert haben, werden alle env-Variablen gelöscht, und env() gibt Nullwerte aus. Führen Sie den folgenden Befehl aus und bummeln Sie dort. Ihre env() fängt wieder an, alle env-Variablen abzufangen

php artisan config:clear
6
Shahrukh Anwar

Die Einfachheit ist die Kraft:

php artisan config:cache

Du wirst erhalten:

Konfigurationscache gelöscht!

Konfiguration erfolgreich zwischengespeichert!

6
Adam Kozlowski

Ich hatte das gleiche Problem in der lokalen Umgebung, das ich gelöst habe

  1. pHP Handwerker Config: klar
  2. pHP Handwerker Config: Cache
  3. und dann brechen Sie den PHP-Handwerker-Befehl ab und starten Sie ihn erneut.
6
jay_mziray

cache löschen mit:

    php artisan config:clear
    php artisan config:cache

Ich bin auf dasselbe Problem in meinem lokalen Umfeld gestoßen und habe alle Antworten hier versucht, aber ohne Erfolg. Nur das hat für mich funktioniert, php artisan config:clear und restart server. Klappt wunderbar!

3
Dexter Bengil

Stellen Sie außerdem zusätzlich zu den Empfehlungen von @andrewtweber sicher, dass zwischen dem KEY = und dem Wert keine Leerzeichen stehen, es sei denn, es steht zwischen Anführungszeichen

.env Datei, z.

...
SITE_NAME= My website
MAIL_PORT= 587
MAIL_FROM_NAME= websitename
...

zu:

...
SITE_NAME="My website"
MAIL_PORT=587
MAIL_FROM_NAME=websitename
...
2
Waqleh

Ich habe dieses Problem mit dem folgenden Befehl gelöst: php artisan key:generate

2
Angel Prieto

Bei mir hat es in dieser Reihenfolge geklappt:

php artisan config:cache
php artisan config:clear
php artisan cache:clear

Und ich habe alle Pausen ohne Glück ausprobiert.

2
TrOnNe

Das Gleiche passiert, wenn: Port sich in Ihrer lokalen .env befindet

wieder machen die Anführungszeichen den Trick

APP_URL="http://localhost:8000"

und dann

php artisan config:clear
1
Stavros

wenn Sie während der lokalen Entwicklung config: cache aufgerufen haben, können Sie dies durch Löschen der Datei bootstrap/cache/config.php rückgängig machen. und das ist Arbeit für mich.

1
Payal Pandav

Ich stehe während der Larvenentwicklung oft vor dem gleichen Problem. Manchmal funktioniert env nicht mehr und gibt keinen Wert zurück. Dieser Grund kann je nach Ihrer Situation unterschiedlich sein. aber in meinem Fall vor ein paar Tagen renne ich einfach

 PHP artisan::config:clear

sei also vorsichtig mit diesem Befehl. weil es alle Konfigurationsdaten aus dem Cache löscht. danach wird kein Wert zurückgegeben. In dieser Situation müssen Sie dies zuerst verwenden, wenn Sie den Befehl PHP artisan config :: clear ausgeführt haben.

php artisan config:cache  // it will cache all data 
php artisan config:clear
Configuration cache cleared!
0
pankaj kumar

wenn Sie während der lokalen Entwicklung config: cache aufgerufen haben, können Sie dies rückgängig machen, indem Sie die Datei bootstrap/cache/config.php löschen. und das ist Arbeit für mich.

@Payal Pandav hat den obigen Kommentar abgegeben.

Ich möchte einen einfachen Workaround nennen. Bearbeiten Sie einfach die Datei config.php im Ordner bootstrap/cache /. Und ändern Sie die Anmeldeinformationen. Das hat bei mir funktioniert. Bitte löschen Sie diese Datei nicht, da diese möglicherweise andere wichtige Daten in der Produktionsumgebung enthält.

0
Daya Satheesh

In meinem Fall funktioniert laravel 5.7 env('APP_URL') nicht aber config('app.url') funktioniert. Wenn ich env und config eine neue Variable hinzufüge - es funktioniert nicht - aber nach php artisan config:cache startet es.

0

Ich habe den Fehler gemacht, indem ich dd/die/dump in der index.php-Datei gemacht habe. Dies führt dazu, dass das System die Configs nicht neu generiert.

Dump in View-Dateien reicht aus. Die Änderungen an der .env-Datei werden sofort aktualisiert.

0
Bing Han

Ich habe das erlebt. Grund war, dass Apache (Benutzer www-data) .env aufgrund von Dateiberechtigungen nicht lesen konnte ..__ Also habe ich die Dateiberechtigungen geändert, um sicherzustellen, dass der Server (Apache) Leseberechtigungen für die Datei hat. Nur das und Boom, jetzt hat alles funktioniert!

0
gthuo

Wenn Sie diesen php artisan config:cache-Befehl auf der Konsole ausführen, speichert er den gesamten Inhalt der .env-Datei im Cache. Wenn Sie nach diesem Befehl Inhalte in die .env-Datei einfügen, ist er erst verfügbar, wenn Sie den Befehl php artisan config:clear ausführen

0

Bei mir hat folgendes geklappt

  • pHP Artisan Config: Cache
  • pHP Artisan Config: klar
  • pHP-Handwerker-Cache: klar
0
beatusfk