2016-06-20 5 views
0

У меня есть php сценарий найти на корень каталог моего проекта laravel. Я хочу, чтобы получить доступ мои настройки в моем .envКак получить доступ к env-файлу из корня проекта Laravel?


Я попытался

$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

Вот первый результат поиска google для команды «artisan console» 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/phpdotenv до read the .env file. env() 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

Это просто рабочий раствор от 2018 года/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()) и подайте необходимые параметры.

Смежные вопросы