首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的配置项没有从代码点火器中的getenv()条目中填充?

为什么我的配置项没有从代码点火器中的getenv()条目中填充?
EN

Stack Overflow用户
提问于 2016-12-11 16:41:31
回答 2查看 3.5K关注 0票数 5

我用的是phpdotenv和Codeigniter。Codeigniter的环境设置不太适合这个项目。

我试图在我的config.php文件中设置如下内容:

代码语言:javascript
复制
$config['site_id'] = getenv('APP_ID');

phpdotenv正在通过pre_system钩子加载,getenv('APP_ID')可以在整个应用程序中使用。我还签入了内核,这会在加载配置项之前触发。

代码语言:javascript
复制
$hook['pre_system'] = function() {
 $dotenv = new Dotenv\Dotenv(APPPATH);
 $dotenv->load();
};

$this-config->item('site_id')的值总是NULL

任何关于为什么会发生这种情况的建议都是非常感谢的。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-28 22:17:33

正如@jhodgson4 4所述,CodeIgniter在框架(core/CodeIgniter.php)的引导过程中首先加载配置的常量。在加载index.php文件之前,您可以在CodeIgniter.php文件的底部要求和减少dotenv。这应该允许您在任何配置文件中使用getenv。

代码语言:javascript
复制
// ...at the bottom of index.php
require APPPATH . 'vendor/autoload.php'; // composer installing into application/vendor

// Use FCPATH If your .env is in the same directory as index.php
// Use APPATH If your .env is in your application/ directory
$dotenv = Dotenv\Dotenv::createMutable(APPATH);
$dotenv->load();

/*
 * --------------------------------------------------------------------
 * LOAD THE BOOTSTRAP FILE
 * --------------------------------------------------------------------
 *
 * And away we go...
 */
require_once BASEPATH . 'core/CodeIgniter.php';
票数 1
EN

Stack Overflow用户

发布于 2018-09-26 14:07:11

哦,你基本上就是这么做的:

代码语言:javascript
复制
require APPPATH . 'vendor/autoload.php';
  $dotenv = new Dotenv\Dotenv(BASEPATH . '../');
  $dotenv->load();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41088509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档