我整合了ckeditor with ckfinder 3
,可以在Amazon S3
云上存储文件。
在我的ckfinder config.php
文件中,位于public/assets/plugins/ckfinder
我已经硬编码了与云建立连接所需的密钥,密钥,存储桶和区域。
但我想从.env
文件中获取配置项。
到目前为止,我在ckfinder的config.php中尝试了这个:
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应用程序之外访问环境变量?
谢谢!
答案 0 :(得分:2)
我发现这个解决方案的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 :(得分:1)
我也很难做到这一点。我不确定这是否是最好的方法,但它确实有效。
以下是代码:
// update the paths depending on where the script is
require_once __DIR__.'/../bootstrap/autoload.php';
Dotenv::load(__DIR__.'/..');
$dbHost = Dotenv::findEnvironmentVariable('DB_HOST');
答案 2 :(得分:0)
<?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'); }
?>