2015-10-20 92 views
1

我整合了我的ckeditor with ckfinder 3,它有能力在Amazon S3云上存储文件。在Laravel应用程序之外访问.env变量

在我的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应用程序外部环境变量?

谢谢!

回答

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'); 
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'); } 
?> 
0

我发现这个解决方案与Laravel 5.x与phpdotenv包,insta由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 
相关问题