Я интегрировал мой 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?
Спасибо!
У меня тоже были проблемы с этим. Я не уверен, что это лучший способ сделать это, но это работает.
Вот код:
// update the paths depending on where the script is
require_once __DIR__.'/../bootstrap/autoload.php';
Dotenv::load(__DIR__.'/..');
$dbHost = Dotenv::findEnvironmentVariable('DB_HOST');
Я нашел это решение с помощью 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
<?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'); }
?>