I tried to install a package
composer require vinkla/instagram php-http/message php-http/guzzle6-adapter
I kept getting
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Using version ^9.1 for vinkla/instagram
Using version ^1.7 for php-http/message
Using version ^2.0 for php-http/guzzle6-adapter
./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
- nexmo/client 1.6.1 requires php-http/guzzle6-adapter ^1.0 -> satisfiable by php-http/guzzle6-adapter[v1.0.0, v1.1.0, v1.1.1] but these conflict with your requirements or minimum-stability.
- nexmo/client 1.6.1 requires php-http/guzzle6-adapter ^1.0 -> satisfiable by php-http/guzzle6-adapter[v1.0.0, v1.1.0, v1.1.1] but these conflict with your requirements or minimum-stability.
- nexmo/client 1.6.1 requires php-http/guzzle6-adapter ^1.0 -> satisfiable by php-http/guzzle6-adapter[v1.0.0, v1.1.0, v1.1.1] but these conflict with your requirements or minimum-stability.
- Installation request for nexmo/client (locked at 1.6.1) -> satisfiable by nexmo/client[1.6.1].
Installation failed, reverting ./composer.json to its original content.
I am on
php --version
PHP 7.2.14-1+ubuntu14.04.1+deb.sury.org+1 (cli) (built: Jan 13 2019 10:33:56) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.14-1+ubuntu14.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
composer.json
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "5.7.*",
"intervention/image": "^2.3",
"laravelcollective/remote": "5.7.*",
"doctrine/dbal": "^2.3",
"league/flysystem-sftp": "^1.0",
"laravelcollective/html": "^5.4.0",
"phpseclib/phpseclib": "~2.0",
"htmlmin/htmlmin": "^5.0",
"league/flysystem-aws-s3-v3": "~1.0",
"vinkla/instagram": "^8.0",
"php-http/message": "^1.6",
"php-http/guzzle6-adapter": "^1.1"
},
"require-dev": {
"phpunit/phpunit": "~7.0",
"phpspec/phpspec": "~5.0",
"symfony/dom-crawler": "~3.1",
"symfony/css-selector": "~3.1",
"filp/whoops" : "~2.0"
},
"autoload": {
"classmap": [ "database" ],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"classmap": [
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php -r \"copy('.env.example', '.env');\"",
"php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist"
}
}
Any things I should check to fix this issue ?
There are two common ways of requiring new packages into your project via Composer: updating composer.json
, or using the command composer require
. It looks like you're doing both here, and Composer is getting confused.
When you use composer require
, Composer will usually use the latest version. You can see this line in your screenshot after the command:
Using version ^2.0 for php-http/guzzle6-adapter
^2.0
is conflicting with the Instagram package, which requires ^1.1
. You can solve this in one of two ways:
1) Update composer.json manually
Your composer.json
with the version ^1.1
specified looks good, but you don't want to use the composer require
command in order to install it. Instead, use composer update
.
You can run composer update
without any arguments, and it will both install any new packages and update any existing packages that have a new version available. This may not be what you want, so instead you can specify the packages you want to update. In this case, it's the ones you're installing:
composer update vinkla/instagram php-http/message php-http/guzzle6-adapter
2) Be explicit with the version number in require command
You can specify version requirements in composer require
using the following syntax: vendor/package:[version]
So, your command becomes:
composer require vinkla/instagram php-http/message php-http/guzzle6-adapter:^1.1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With