Доступ к переменным .env вне приложения Laravel

Я интегрировал мой ckeditor with ckfinder 3 который имеет возможность хранить файлы на Amazon S3 облако.

В моем ckfinder config.php файл, который находится в public/assets/plugins/ckfinder Я жестко запрограммировал ключ, секретный ключ, корзину и регион, которые необходимы для соединения с облаком.

Но я хочу получить элементы конфигурации из .env файл.

Пока что я попробовал это в config.php в ckfinder:

require $_SERVER['DOCUMENT_ROOT'].'/../bootstrap/autoload.php';
$app = require $_SERVER['DOCUMENT_ROOT'].'/../bootstrap/app.php';
var_dump($app->environment('S3_KEY');

Но это не с ошибкой: Fatal error: Uncaught exception 'ReflectionException' with message 'Class env does not exist' in /home/vagrant/projects/dk/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 779

Итак, вопрос в том, как получить доступ к переменным среды вне приложения Laravel?

Спасибо!

1

Решение

У меня тоже были проблемы с этим. Я не уверен, что это лучший способ сделать это, но это работает.

  1. Требовать автозагрузчик
  2. Загрузите файл .env в Dotenv
  3. Ссылка на вашу переменную

Вот код:

// update the paths depending on where the script is
require_once __DIR__.'/../bootstrap/autoload.php';
Dotenv::load(__DIR__.'/..');
$dbHost = Dotenv::findEnvironmentVariable('DB_HOST');
1

Другие решения

Я нашел это решение с помощью Laravel 5.x с пакетом phpdotenv, установленным composer require vlucas/phpdotenv:

require __DIR__.'/../vendor/autoload.php'; //Load composer autoload
$dot = new \Dotenv\Dotenv(__DIR__.'/../'); //Location of .env
$dot->load(); //Load the configuration (Not override, for override use overload() method
$url = getenv('APP_URL'); // Get var value
1

<?php
$_ENV = array();
$handle = fopen(".env", "r");
if($handle) {
while (($line = fgets($handle)) !== false) {
if( strpos($line,"=") !== false) {
$var = explode("=",$line);
$_ENV[$var[0]] = trim($var[1]);
}
}
fclose($handle);
} else { die('error opening .env'); }
?>
0
По вопросам рекламы [email protected]