CodeIgniter3:为什么一开始就要设置_SERVER美元['CI_ENV']?
2022-08-30 15:12:38
我看到在他们的默认安装中,他们的索引.php有这个:
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
为什么已经设置在数组中?CI_ENV
$_SERVER
我看到在他们的默认安装中,他们的索引.php有这个:
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
为什么已经设置在数组中?CI_ENV
$_SERVER
正如奥利弗所描述的那样;它是多个环境的特殊用例。在开发,测试和生产到达代码之前,将其拆分出来。要对此进行配置,请执行以下操作:.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地址设置常量。
来源:使用环境常量
万一您正在使用nginx,以下是您必须在vhosts配置中添加的配置:
server {
location ~ \.php$ {
fastcgi_param CI_ENV production;
}
保存并运行nginx语法检查(只是为了避免你诅咒我):
nginx -t
如果您遇到问题或找不到参数,可以按照下面的答案进行操作:Nginx变量类似于Apache中的SetEnv?