2016-06-20 159 views
0

我有一個php腳本位於我的laravel項目的根目錄目錄。 我要訪問我的設置我的.ENV如何從Laravel項目的根目錄訪問env文件?


我已經試過

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

PHP Fatal error: Call to undefined function env() 

什麼是該解決方法?我是否應該包含任何能夠訪問env()的東西?

+1

如果你正在編寫一個原始的php腳本,你沒有引導Laravel環境。沒有配置文件已經加載,沒有幫助功能可用。相反,值得將您的腳本編寫爲工匠控制檯命令。 – jszobody

+0

什麼是工匠控制檯命令?你介意給我一個鏈接嗎? – ihue

+1

下面是「artisan console command」https://laravel.com/docs/5的第一個谷歌搜索結果。1/artisan – jszobody

回答

6

如果你只是想加載.env配置在一個單獨的PHP腳本中,你可以做這樣的:

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

這將您.env配置加載到$_ENV陣列。

所以現在你可以訪問你的變量是這樣的:

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

如果你真的想要的是env()助手功能,只是去把那個文件:

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

現在,您也可以訪問env('DB_DATABASE');

注意:這並不會爲您提供引導Laravel環境。這是一個簡單的方法來抓取你的.env配置變量,但就是這樣。

+0

這對我所尋找的東西來說已經足夠了。 :) – ihue

4

Laravel正在使用vlucas/phpdotenvread the .env fileenv() function is Laravel helper/shortcut。要使用您有權要求供應商的文件,並創建一個應用程序env命令/內核laravel對象

<?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

非常感謝你! – ihue

0

這是簡單有效的解決方案爲/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']; 

故障排除:
- 確保Dotenv文件被正確調用。
- 檢查Dotenv->load()(和Dotenv->__constructor())並提供所需的參數。