首页 > 解决方案 > 使用 .env 配置 codeigniter 对我不起作用

问题描述

我正在尝试使用 .env 在 codeigniter 中配置 solr 端点。我执行以下操作:

  1. 我创建了一个配置类 SolrConfigEndpoints
namespace Config;

use CodeIgniter\Config\BaseConfig;

class SolrConfigEndpoints extends BaseConfig
{
    public $ptv = array(
        'endpoint' => array(
            'localhost' => array(
                'scheme' => 'http', # or https
                'host' => '127.0.0.1',
                'port' => 8983,
                'path' => '/',
                'core' => 'course_catalog',
            )
        )
    );
}
  1. 我将 .env 中的值配置如下:
#--------------------------------------------------------------------
# SOLR
#--------------------------------------------------------------------

Config\SolrConfigEndpoints.ptv.endpoint.localhost.host='localhost'
Config\SolrConfigEndpoints.ptv.endpoint.localhost.port=8983
Config\SolrConfigEndpoints.ptv.endpoint.localhost.path='/'
Config\SolrConfigEndpoints.ptv.endpoint.localhost.core='ptv'
  1. 在我的模型中,我尝试访问 .env 数据
$config = getenv();        
d($config); // something like a var_dump

并且 SolrConfigEndpoints 变量不存在。

标签: phpconfigurationcodeigniter-4

解决方案


我认为您正在尝试从 SolrConfigEndpoints 获取配置,因此您必须首先创建一个这样的实例:$config = config('SolrConfigEndpoints');然后您可以$config像访问普通对象一样访问对象的属性。这里的想法是使配置在项目的任何地方都可以轻松使用。

而已声明的 .env 属性只是为了替换配置中定义的原始属性。访问任何环境变量。你必须使用getenv('key_name').

参考:https ://codeigniter4.github.io/userguide/general/configuration.html?highlight=baseconfig


推荐阅读