我用的是phpdotenv和Codeigniter。Codeigniter的环境设置不太适合这个项目。
我试图在我的config.php文件中设置如下内容:
$config['site_id'] = getenv('APP_ID');phpdotenv正在通过pre_system钩子加载,getenv('APP_ID')可以在整个应用程序中使用。我还签入了内核,这会在加载配置项之前触发。
$hook['pre_system'] = function() {
$dotenv = new Dotenv\Dotenv(APPPATH);
$dotenv->load();
};$this-config->item('site_id')的值总是NULL。
任何关于为什么会发生这种情况的建议都是非常感谢的。
提前谢谢。
发布于 2019-12-28 22:17:33
正如@jhodgson4 4所述,CodeIgniter在框架(core/CodeIgniter.php)的引导过程中首先加载配置的常量。在加载index.php文件之前,您可以在CodeIgniter.php文件的底部要求和减少dotenv。这应该允许您在任何配置文件中使用getenv。
// ...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';发布于 2018-09-26 14:07:11
哦,你基本上就是这么做的:
require APPPATH . 'vendor/autoload.php';
$dotenv = new Dotenv\Dotenv(BASEPATH . '../');
$dotenv->load();https://stackoverflow.com/questions/41088509
复制相似问题