2016-06-20 4 views
0

Ich habe eine PHP Skript finden Sie unter der Root Verzeichnis meines Laravel-Projekts. Ich möchte meine Einstellungen in meinem .env zugreifenWie kann man von der Wurzel des Laravel-Projekts auf env-Datei zugreifen?


I

$dbname  = env('DB_DATABASE'); 
$user  = env('DB_USERNAME'); 
$host  = env('DB_HOST'); 
$pass  = env('DB_PASSWORD'); 

I

PHP Fatal error: Call to undefined function env() 
bekam versucht haben

Was die Abhilfe dafür ist, ? Sollte ich etwas hinzufügen, um auf env() zugreifen zu können?

+1

Wenn Sie ein RAW-PHP-Skript schreiben, haben Sie keine Larovel-Umgebung mit Bootstrap. Es wurden keine Konfigurationsdateien geladen, keine Hilfsfunktionen sind verfügbar. Es könnte sich lohnen, Ihr Skript stattdessen als Befehl für eine handwerkliche Konsole zu schreiben. – jszobody

+0

Was ist ein Konsolenbefehl? Macht es Ihnen etwas aus, mir einen Link zu schicken? – ihue

+1

Hier ist das allererste Google-Suchergebnis für "artisan console command" https://laravel.com/docs/5.1/artisan – jszobody

Antwort

6

Wenn Sie nur Ihre .env config in einem separaten PHP-Skript laden möchten, können Sie es wie folgt tun:

require_once "vendor/autoload.php"; 
Dotenv::load(__DIR__); 

Dies wird Ihre .env Config in das $_ENV Array laden.

So, jetzt können Sie Ihre Variablen wie folgt zugreifen:

$dbname  = $_ENV['DB_DATABASE']; 
$user  = $_ENV['DB_USERNAME']; 
$host  = $_ENV['DB_HOST']; 
$pass  = $_ENV['DB_PASSWORD']; 

Wenn Sie wirklich wollen, dass env() Helferfunktion, gehen Sie einfach die Datei erhalten:

require_once "vendor/laravel/framework/src/Illuminate/Foundation/helpers.php"; 

Und jetzt können Sie auch env('DB_DATABASE'); zugreifen

Hinweis: Dies gibt Ihnen keine Bootstrapped Laravel-Umgebung überhaupt. Es ist eine einfache Möglichkeit, Ihre .env Konfigurationsvariablen zu erfassen, aber das ist es.

+0

Das ist mehr als genug für das, was ich suche. :) – ihue

4

Laravel verwendet vlucas/phpdotenv bis read the .env file. Die env() function is Laravel helper/shortcut. So verwenden Sie den Befehl env müssen Sie die Herstellerdateien benötigen und erstellen Sie eine app/kernel Laravel Objekt

<?php 

require __DIR__.'/vendor/autoload.php'; 

$app = require_once __DIR__.'/bootstrap/app.php'; 
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); 

\Dotenv::load($app->environmentPath(), $app->environmentFile()); 
var_dump(env('DB_DATABASE')); 
+0

Vielen Dank! – ihue

0

Das ist einfach Arbeitslösung ab /Laravel 5,6

//assumes this script is in the root folder, same as .env 
require_once "vendor/autoload.php"; 
(new \Dotenv\Dotenv(__DIR__))->load(); 

$count = $_ENV['UNICORN_COUNT']; 

Fehlerbehebung :
- stellen Sie sicher, Dotenv-Datei korrekt aufgerufen wird.
- überprüfen Sie die Dotenv->load() (und Dotenv->__constructor()) und liefern Sie die benötigten Parameter.

Verwandte Themen