Dynamically set li3 environment based on subdomain

less than 1 minute read

I’ve mentioned before that our latest project in work, is built on Lithium. It aint no Rails, but its not bad for a PHP framework! ;)

Today I needed to dynamically set the Environment based on the HTTP_HOST, specifically, development environment when a particular subdomain was used.

By default, the lithium detector will only set the environment to development if the request is coming from

A quick and easy way to get around this, is to modify /config/bootstrap/action.php to check the HTTP_HOST and set the environment if a conditional is fulfilled.

Dispatcher::applyFilter('run', function($self, $params, $chain) {

   * Check if the request is coming from the
   * particular subdomains, and set the ENV if so
  $subs = array(

  $requesting_host = $params['request']->env('HTTP_HOST');

  if(in_array($requesting_host,$subs)) {
  } else {

  // ... rest of filter definition ...

  return $chain->next($self, $params, $chain);

There’s probably a better way to do this, by setting an Apache env variable and checking that, but this was a quick and dirty hack that did the trick.