我想知道给定codeigniter $_SERVER['SERVER_NAME']
,我可以为每种$_SERVER['SERVER_NAME']
加载不同的配置文件吗?
例如,如果网址是localhost,请改为运行config_localhost
,如果网址处于活动状态,请运行config_live
。同样对于database.php也是如此。
到目前为止,我要检查相应的文件和交换机循环以检查服务器名称。
switch ($_SERVER['SERVER_NAME']) {
case KH_SERVER_NAME: // development server
$config['base_url'] = 'localhost';
break;
default: // live server
$config['base_url'] ="http://www.domain.com";
break;
}
答案 0 :(得分:2)
是的,你可以做这样的事情。我建议把这样的东西放到你的根index.php
中,以便它在开始时设置:
switch( $_SERVER['HTTP_HOST'] )
{
case 'www.domainname.com':
define('ENVIRONMENT', 'production');
break;
case 'dev.domainname.com':
define('ENVIRONMENT', 'development');
break;
case 'test.localhost':
case 'www.test.localhost':
define('ENVIRONMENT', 'local');
break;
}
这定义了一个名为ENVIRONMENT
的变量,然后您可以在整个配置文件(和应用程序,如果需要)中使用 - 这样,您可以执行以下操作,而不是测试$ _SERVER变量:
switch (ENVIRONMENT)
{
case 'local':
case 'development':
$config['base_url'] = 'localhost';
break;
case 'production':
$config['base_url'] ="http://www.domain.com";
break;
}
和其他方便的事情:
switch (ENVIRONMENT)
{
case 'local':
error_reporting(E_ALL);
break;
case 'development':
error_reporting(E_ALL & ~E_DEPRECATED);
break;
case 'production':
error_reporting(0);
break;
}
这也可以在主应用程序中使用,例如,决定是否要在视图中输出分析跟踪代码 - 您通常只想在生产中输出 - 例如:
<? if(ENVIRONMENT == 'production'): ?>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-Y']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<? endif ?>