CodeIgniter3:为什么首先要设置$ _SERVER ['CI_ENV']?

dsd*_*dsd 23 php codeigniter-3

我看到在他们的默认安装中,他们的index.php有这样的:

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
Run Code Online (Sandbox Code Playgroud)

为什么会CI_ENV曾经已经在内部设置$_SERVER阵列?

Mac*_*eeE 38

正如奥利弗所描述的那样; 它是适用于多种环境的特殊用例..htaccess在进入代码之前,先通过开发,测试和生产进行拆分.要配置:

开发(Localhost)

<IfModule mod_env.c>
    SetEnv CI_ENV development
</IfModule>
Run Code Online (Sandbox Code Playgroud)

测试(您的本地服务器)

<IfModule mod_env.c>
    SetEnv CI_ENV testing
</IfModule>
Run Code Online (Sandbox Code Playgroud)

生产(远程服务器)

<IfModule mod_env.c>
    SetEnv CI_ENV production
</IfModule>
Run Code Online (Sandbox Code Playgroud)

除非有一些人工干预,否则你认为它永远不会改变.关于此问题的文档不多:

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

来源:使用环境常数


tal*_*ony 6

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

  server {

        location ~ \.php$ {
            fastcgi_param CI_ENV production;
        }
Run Code Online (Sandbox Code Playgroud)

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

nginx -t
Run Code Online (Sandbox Code Playgroud)

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