CodeIgniter3:为什么一开始就要设置_SERVER美元['CI_ENV']?

2022-08-30 15:12:38

我看到在他们的默认安装中,他们的索引.php有这个:

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

为什么已经设置在数组中?CI_ENV$_SERVER


答案 1

正如奥利弗所描述的那样;它是多个环境的特殊用例。在开发,测试和生产到达代码之前,将其拆分出来。要对此进行配置,请执行以下操作:.htaccess

开发(本地主机)

<IfModule mod_env.c>
    SetEnv CI_ENV development
</IfModule>

测试(本地服务器)

<IfModule mod_env.c>
    SetEnv CI_ENV testing
</IfModule>

生产(远程服务器)

<IfModule mod_env.c>
    SetEnv CI_ENV production
</IfModule>

你认为它不会改变是正确的,除非有一些手动干预。关于这一点的文档不多:

“这个服务器变量可以在你的.htaccess文件中设置,或者使用SetEnv在Apache配置中设置。nginx和其他服务器可以使用替代方法,或者您可以完全删除此逻辑并根据服务器的IP地址设置常量。

来源:使用环境常量


答案 2

万一您正在使用nginx,以下是您必须在vhosts配置中添加的配置:

  server {

        location ~ \.php$ {
            fastcgi_param CI_ENV production;
        }

保存并运行nginx语法检查(只是为了避免你诅咒我):

nginx -t

如果您遇到问题或找不到参数,可以按照下面的答案进行操作:Nginx变量类似于Apache中的SetEnv?


推荐