Does using drush uli in D8 and getting http://default drive you mad?

In Drupal 8, setting your sites domain in settings.php is no longer possible. In Drupal 7, you could set the base_url in settings.php like:

$base_url = 'http://domain.com';

Have you noticed in Drupal 8 that when you use drush uli it returns a url that starts with http://default! If you are tired of copying and pasting what comes after http://default/ or adding the --uri=http://domain.com flag along with drush uli I have a solution for you!

Meet the drushrc.php file. I prefer to put this one level higher than my Drupal root. So…

  • Project repo
  • webroot (public_html, web, docroot, etc)
  • drush/drushrc.php

Lots can go in the drushrc.php file, but if you simply want to fix the drush uli default issue, it can just have:

<?php
 
$options['uri'] = 'http://domain.com';

If you are using GIT to manage your code base, you could consider a strategy of a drushrc.php file per environment. Example:

Create drush/drushrc.local.php

That file can contain:

<?php
 
$options['uri'] = 'http://domain.dev';

Your main drushrc.php now looks like:

<?php
 
/**
 * If there is a local drushrc file, then include it.
 */
 
$local_drushrc = __DIR__ . "/drushrc.local.php";
if (file_exists($local_drushrc)) {
  include $local_drushrc;
}

Now you can place drush/drushrc.local.php in your .gitignore file.

If you are using a PaaS like Pantheon, you can take this strategy:

Since Pantheon automatically handles setting the $options[‘url’] for you, you can simply say...if NOT Pantheon, use my local dev domain.

With the Pantheon approach, your drushrc.php file can look like:

<?php
 
if (!isset($_SERVER['PANTHEON_ENVIRONMENT'])) {
  $options['uri'] = 'http://domain.dev';
}

I believe setting the $options[‘uri’] has always been possible if using drush aliases, so continue on if you’ve always done that.

Now enjoy the infinite bliss when typing drush uli and having the correct domain returned.

Code Drupal Drupal 8 Drupal Planet

Read This Next