Laravel 5 – env() geeft altijd null terug

Ik probeer erachter te komen waarom mijn env()-helper altijd nullretourneert. Dit veroorzaakt problemen, vooral in het bestand app.php, waar env()-helpers standaard veel worden gebruikt. Misschien een mysterieuze serverinstelling?

Mijn env-bestand:

APP_ENV=production
APP_KEY=base64:mymagickey=
APP_DEBUG=false
APP_LOG_LEVEL=info
APP_URL=http://www.example.com
etc...

BEWERKEN – Ik heb geprobeerd het volgende te volgen:

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

en natuurlijk gebruik ik de env-helper als volgt: env('APP_ENV')

Maar nog steeds geen succes. Het rare is dat de php-variabele $_ENVelke afzonderlijke variabele uit het bestand .envbevat.


Antwoord 1, autoriteit 100%

env(...)-functie werkt niet nadat u de configuratie in de cache hebt opgeslagen. (van laravel 5.2 tot huidige 5.7)

De Laravel-documentatiezegt

Als u de opdracht config:cachegebruikt tijdens de implementatie, moet u ervoor zorgen dat u de functie envalleen aanroept vanuit uw configuratiebestanden, en niet vanuit ergens anders in uw toepassing.

Dus het juiste antwoord zou zijn:

Als u env vanuit uw toepassing aanroept, wordt het ten zeerste aanbevolen om de juiste configuratiewaarden toe te voegen aan uw configuratiebestanden en in plaats daarvan env vanaf die locatie aan te roepen, zodat u uw env-aanroepen kunt converteren naar configuratieaanroepen.

En ik citeerde het uit dezelfde documentatie

Maar voor een snelle oplossing is dit voldoende:

php artisan config:clear

En nu zou het duidelijk moeten zijn waarom, toen je config:cacheprobeerde, het niet hielp, ook al wist het de configuratie voorafgaand aan het cachen.


Antwoord 2, autoriteit 23%

Ik hoop dat dit commando je zal redden

php artisan config:clear


Antwoord 3, autoriteit 16%

Vijf belangrijkste commando’s als je Laravel niet werkt zoals verwacht na enkele wijzigingen in .env of databasemap of vanwege andere wijzigingen.
Hier is de volledige uitleg:
https://www.youtube.com/watch?v=Q1ynDMC8UGg

php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
composer dump-autoload

Antwoord 4, autoriteit 13%

De volgende opdracht werkte voor mij.
Ik heb per ongeluk alle cachebestanden gewist, dus env('something')gaf null terug.

php artisan optimize:clear

Antwoord 5

Ik weet dat dit een heel oud draadje is en dat de reden misschien niet hetzelfde is. Maar mij overkwam hetzelfde probleem.

De reden was dat ik een probleem had met het .env-bestand. Dit heb ik in .env

TEST="e@1asa

Merk op dat het eindcitaat ontbreekt. En het zou moeten zijn,

TEST="e@1asa"

Alle env-variabelen die ik daarna heb toegevoegd, hebben vanwege deze fout null geretourneerd.

Zelfs niets naar het foutenlogboek geschreven. Dus als je deze fout bent tegengekomen probeer dan een voorbeeldvariabele env toe te voegen als de eerste record van het bestand. Als het werkt en de opname werkt eindelijk niet, is er mogelijk een fout in .env


Antwoord 6

Als het geaccepteerde antwoord het probleem niet oplost, controleer dan of het .env-bestand de juiste lees- en schrijfrechten heeft. Als het bestand niet kan worden gelezen door het framework / de bibliotheek, dan zijn de waarden altijd null. Ik ben dit probleem tegengekomen in een van mijn Lumen-projecten, maar na het wijzigen van de bestandsrechten werkte het.


Antwoord 7

Vergeet niet om uw .env-bestand te controleren op dubbele variabeledeclaraties.

STRIPE_PUBLISHABLE_KEY="why-wont-this-key-get-outputted"
#...
# Because at the bottom of the .env file it is unset like this
STRIPE_PUBLISHABLE_KEY=

Antwoord 8

Plaats het .env-bestand in de hoofdmap van het project

Voeg deze toe aan het app.php-bestand.

try {
    (new Dotenv\Dotenv(__DIR__.'/../'))->load();
} catch (Dotenv\Exception\InvalidPathException $e) {
    echo $e;
}

Antwoord 9

php artisan config:clear.
Voer deze opdracht uit om de configuratiecache te wissen.
Het gebeurt omdat het configuratiebestand in de cache is opgeslagen en op het moment van cachen moeten de waarden null zijn.

Other episodes