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