localhost/live - detect by HTTP_HOST

点点圈 提交于 2019-12-04 13:52:18

问题


let's say I develop locally and debug small things on live server.

Is it good idea to have something like this in my code? :

$is_local = (strpos($_SERVER['HTTP_HOST'], 'localhost') !== false);
define ('DEBUG',$is_local);

And then use it through my code, when setting stuff?

$mysql_settings = (DEBUG) ? 
  array(/*localhost settings*/) : 
  array(/*live settings*/);

This way, I can use the same files live and on localhost, so I can sync without any fear of having wrong e.g. connection settings on live server.

Is it good or wrong idea?


回答1:


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.




回答2:


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' ]




回答3:


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.



来源:https://stackoverflow.com/questions/2753249/localhost-live-detect-by-http-host

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