localhost/live - detect by HTTP_HOST

微笑、不失礼 提交于 2019-12-03 08:45:33

Nothing at all wrong with doing the way you're doing it.

Another strategy is to set up some environment variable on your development (or other, non-production) system.

Under apache, you could stick something like this:

SetEnv MYAPP_ENVIRONMENT development

in httpd.conf or a suitable .htaccess file

Then in your configuration code:

if (! getenv('MYAPP_ENVIRONMENT')){
  $env = 'production';
}else{
  $env = getenv('MYAPP_ENVIRONMENT"));
}

require_once 'conf/config.' . $env . '.php';

or something along those lines.

IMHO, what you're doing isn't that bad at all.

The only flaw is on the $is_local line:

$is_local = (strpos($_SERVER['http_host'], 'localhost') !== false);

This could evaluate to TRUE for a site like localhostIsAwesome.com.

Overall, though, the way you are doing it is actually pretty decent.

One other suggestion would be to use $_SERVER[ 'SERVER_NAME' ]

it's not a bad idea, if

  1. you have only two environment, local and server
  2. you never have to turn on the debug mode for the server

so it does not address scenario like

  1. multiple environments like dev, test, production
  2. team of more than two developers

A practice I employ on a project is to have settings code files like conf.dev.php, conf.test.php, conf.prod.php for different environment settings, and one file for env switch flag like

$env = 'production';

then you can include file containing the env setings dynamically based on the $env switch, like:

require_once 'conf.'.$env.'.php';

remember to include the conf.dev.php file in git/hg/svn ignore file, so it will not mess up among team members, and conf.production.php in ignore file too for security reason.

just my two cents.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!