Installing drush via composer on Drupal 8.3 throws errors

We recently had a problem installing drush on a new site. After we ran the following (we have a local composer)

./composer.phar require drush/drush:^8

We received this giant error message:

./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - drush/drush 8.0.0 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.0-beta11 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.0-beta12 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.0-beta14 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.0-rc1 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.0-rc2 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.0-rc3 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.0-rc4 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.1 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.2 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.3 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.0.5 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.1.0 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.1.1 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.1.2 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.1.3 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.1.4 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.1.5 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.1.6 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.1.7 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.1.8 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - drush/drush 8.1.9 conflicts with drupal/drupal[No version set (parsed as 1.0.0)].
    - Conclusion: don't install drush/drush 8.1.11
    - Conclusion: don't install drush/drush 8.1.10
    - Conclusion: don't install drush/drush 8.x-dev
    - Installation request for drupal/drupal No version set (parsed as 1.0.0) -> satisfiable by drupal/drupal[No version set (parsed as 1.0.0)].
    - Conclusion: remove phpdocumentor/reflection-docblock 3.1.1
    - Installation request for drush/drush ^8 -> satisfiable by drush/drush[8.0.0, 8.0.0-beta11, 8.0.0-beta12, 8.0.0-beta14, 8.0.0-rc1, 8.0.0-rc2, 8.0.0-rc3, 8.0.0-rc4, 8.0.1, 8.0.2, 8.0.3, 8.0.5, 8.1.0, 8.1.1, 8.1.10, 8.1.11, 8.1.2, 8.1.3, 8.1.4, 8.1.5, 8.1.6, 8.1.7, 8.1.8, 8.1.9, 8.8.x-dev, 8.x-dev].
    - Conclusion: don't install phpdocumentor/reflection-docblock 3.1.1
    - drush/drush 8.8.x-dev requires phpdocumentor/reflection-docblock ^2.0 -> satisfiable by phpdocumentor/reflection-docblock[2.0.0, 2.0.0a1, 2.0.0a2, 2.0.0a3, 2.0.1, 2.0.2, 2.0.3, 2.0.4].
    - Can only install one of: phpdocumentor/reflection-docblock[2.0.0, 3.1.1].
    - Can only install one of: phpdocumentor/reflection-docblock[2.0.0a1, 3.1.1].
    - Can only install one of: phpdocumentor/reflection-docblock[2.0.0a2, 3.1.1].
    - Can only install one of: phpdocumentor/reflection-docblock[2.0.0a3, 3.1.1].
    - Can only install one of: phpdocumentor/reflection-docblock[2.0.1, 3.1.1].
    - Can only install one of: phpdocumentor/reflection-docblock[2.0.2, 3.1.1].
    - Can only install one of: phpdocumentor/reflection-docblock[2.0.3, 3.1.1].
    - Can only install one of: phpdocumentor/reflection-docblock[2.0.4, 3.1.1].
    - Installation request for phpdocumentor/reflection-docblock (locked at 3.1.1) -> satisfiable by phpdocumentor/reflection-docblock[3.1.1].


Installation failed, reverting ./composer.json to its original content.

This fix for us was to downgrade the pacakge phpdocumentor/reflection-docbloc from version 3.x to 2.x

./composer.phar require phpdocumentor/reflection-docblock:^2.0

And then re-run the drush installer:

./composer.phar require drush/drush:^8

NOTE: I’m running composer directly from a PHAR file. If you don’t have that (you might have it installed globally) just run the commands without the ./ in front of composer.