Ion Ghițun
Ion Ghițun

Reputation: 87

Installation failed for phpunit/phpunit ^6.2

when i run

composer require --dev phpunit/phpunit

i get the following message:

composer require --dev phpunit/phpunit
Using version ^6.2 for phpunit/phpunit
./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
- Installation request for sebastian/object-enumerator (locked at 2.0.1) -> satisfiable by sebastian/object-enumerator[2.0.1].
- phpunit/phpunit 6.2.0 requires sebastian/object-enumerator ^3.0.2 -> satisfiable by sebastian/object-enumerator[3.0.2].
- phpunit/phpunit 6.2.1 requires sebastian/object-enumerator ^3.0.2 -> satisfiable by sebastian/object-enumerator[3.0.2].
- phpunit/phpunit 6.2.2 requires sebastian/object-enumerator ^3.0.2 -> satisfiable by sebastian/object-enumerator[3.0.2].
- phpunit/phpunit 6.2.3 requires sebastian/object-enumerator ^3.0.2 -> satisfiable by sebastian/object-enumerator[3.0.2].
- Conclusion: don't install sebastian/object-enumerator 3.0.2
- Installation request for phpunit/phpunit ^6.2 -> satisfiable by phpunit/phpunit[6.2.0, 6.2.1, 6.2.2, 6.2.3].

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

Here is my composer json file:

"require": {
  "php": "^7.0",
  "laravel/framework": "^5.4",
  "guzzlehttp/guzzle": "^6.3",
  "symfony/psr-http-message-bridge": "^1.0",
  "mcamara/laravel-localization": "^1.2",
  "laravelcollective/html": "^5.4",
  "laravel/socialite": "^3.0",
  "yajra/laravel-datatables-oracle": "^7.9"
},
"require-dev": {
  "fzaninotto/faker": "^1.6",
  "symfony/css-selector": "^3.3",
  "symfony/dom-crawler": "^3.3"
}

I tried to get from version 5.4 above and always get a similar error but with other dependecies, the only version that seems to work is 5.0

Upvotes: 7

Views: 14302

Answers (2)

Sven
Sven

Reputation: 70863

If you run a composer update with the composer.lock file and the vendor folder present, Composer will take the installed versions into accounts before updating.

Make sure you have the lock file committed into your project repository, to be able to restore the current version. Then try another update, but before that delete the lock file and vendor folder.

My experience is that such an update will not be affected by already installed versions which may prevent the necessary updates.

Another option for debugging the dependencies is to use composer why-not phpunit/phpunit 6.2.0 (use an explicit version you know exists - without version the output of the command is not meaningful). Composer will give you a list of dependencies that prevent the update, for you to investigate further.

Upvotes: 2

localheinz
localheinz

Reputation: 9582

Run

$ composer require --dev phpunit/phpunit --update-with-dependencies

See https://getcomposer.org/doc/03-cli.md#require:

--update-with-dependencies: Also update dependencies of the newly required packages.

Note Deleting composer.lock in circumstances like this isn't really the best idea, as it might pull in dependencies that break your code in other places. You really only want to update a specific dependency at a time, rather than update all of them at once.

Upvotes: 24

Related Questions