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.

  • Tom Bisciglia

    Thanks for the suggestion, Chris; I’ve seen it repeated other places after you recommended it. In my case, it did not help, but what did help is a simple “composer update” before running “composer require drush/drush”. Something worth considering if your composer.lock settings aren’t crucial.

    • Chris Haas

      Thanks Tom! We did that prior to this and that didn’t help but since its been two months they might have already resolved the conflict and your solution might be the better one now.

  • This fix worked for me where composer update (as well as a host of other things) didn’t. Thanks for the suggestion!

  • StryKaizer

    Ran into the same issue. downgrade fixed it. Thx for sharing!!