Php 在CodeIgniter 3.0上实现DotEnv

Php 在CodeIgniter 3.0上实现DotEnv,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我正在尝试使用CodeIgniter 3在项目中配置DotEnv 我看到根目录(应用程序文件夹外部)中有一个composer.json,所以我运行: require vlucas/phpdotenv 我已经在config.php上启用了composer和hooks: $config['composer_autoload'] = TRUE; $config['enable_hooks'] = TRUE; 我补充说: $hook['pre_system'] = function() {

我正在尝试使用CodeIgniter 3在项目中配置DotEnv

我看到根目录(应用程序文件夹外部)中有一个composer.json,所以我运行:

require vlucas/phpdotenv
我已经在config.php上启用了composer和hooks:

$config['composer_autoload'] = TRUE;
$config['enable_hooks'] = TRUE;
我补充说:

$hook['pre_system'] = function() {
    $dotenv = new Dotenv\Dotenv(APPPATH);
    $dotenv->load();
};
我在“应用程序”文件夹中创建了一个.env文件

我的问题

未使用database.php中的$\u ENV或getenv加载变量

我的发现

我需要运行:

composer dump-autoload
如果我将composer_autoload从TRUE更改为:

$config['composer_autoload'] = '[FULLPATH]/vendor/autoload.php';
它起作用了

文档

根据文档,如果我们将composer_autoupload设置为true,它将从以下位置调用autoload.php:

application/vendor/autoload.php.
我的问题

  • 这是否意味着,我必须将composer.json移动到应用程序文件夹中,以便在其中创建供应商
  • 使用$\u ENV安全吗

  • 1.是的,文件对这一点有点误导。另外,将composer放在公众接触不到的地方会更安全,这样就没有人可以检查您安装了哪些包/库(以及最终的泄漏)。因此,使用
    true
    APPPATH
    目录中的供应商。2.远离什么?您也可以使用
    $\u服务器
    getenv('VAR\u KEY')
    。谢谢@Tpojka。不会注射。我知道会话中的一些变量可以被注入,这意味着我应该将composer.json移动到应用程序folderCorrect中。对于composer的供应商来说,默认的驻留目录是
    APPPATH
    ,您可以很好地使用它。你可以看到我是如何使用它的。Tpojka,请写一个答案来选择它;),谢谢