简体   繁体   中英

How to use environment variable effectively

So I use two main libraries for PHP project right now: php-activerecord and slim micro framework. I am also a user of vagrant and puppet cause I like keeping thing in sync. The one thing with this that I cannot seem to wrap my head around at this point is managing the different environments that my code goes to. It seems that the two libraries I mention attempt to give a mechanism to mange this but I am not seeing where I should put this kind of information.

//This is the config for php-AR
ActiveRecord\Config::initialize(function($cfg){
    $cfg->set_model_directory('models');
    $cfg->set_connections(array(
        //This is what I am interested in
        'development' => 'mysql://username:password@localhost/database_name'));
});

Similar to the above Slim has environments settings as well. Are these environment settings all based off of a config file that just ifs its way through based on the $_SERVER super global?

How is this normally managed? I am mostly curious for larger environments.

Edit 1) Just to be a bit more clear. I am curious about the logic added to code and setting within servers that are used. I know that is a bit broad so see below.

I have seen a lot of uses where .htaccess is mentioned to pull environment variables from. Obviously as I mentioned PHP has the $_SERVER super global that I can build logic around. Thanks to Diederik I now know I can use ~/.bash_profile on my servers.

Have you looked at the readme for ActiveRecord? It clearly states how to achieve this. In the code you posted above you already define a development database. You can simple add new ones to that as much as you want. The only bit you'll have to change once you upload to a different server is this part:

ActiveRecord\Config::initialize(function($cfg)
{
  $cfg->set_default_connection(your_environment);
});

Now, your_environment needs to be defined first. This can be achieved by doing something like:

$cfg->set_default_connection(getenv('APP_ENV'));

And then you'll just have to define that environment variable. This can be done through multiple ways. An example is to put the following in your ~/.bash_profile :

export APP_ENV="development"

That should do it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM