This is more of a note to myself, But a while back when Laravel announced that it would have minimum support for PHP 7.0 I thought nothing of it. My server was running Ubuntu 16.04 so I had PHP 7.0

Fast forward and Laravel 5.5 is out and ready for the masses. A few updates to my project and I’m ready to install the latest version.

BOOM!

Problem 1 - Installation request for doctrine/instantiator 1.1.0 -> satisfiable by doctrine/instantiator[1.1.0]. - doctrine/instantiator 1.1.0 requires php ^7.1 -> your PHP version (7.0.12) does not satisfy that requirement. Problem 2 - doctrine/instantiator 1.1.0 requires php ^7.1 -> your PHP version (7.0.12) does not satisfy that requirement. - phpunit/phpunit-mock-objects 4.0.4 requires doctrine/instantiator ^1.0.5 -> satisfiable by doctrine/instantiator[1.1.0]. - Installation request for phpunit/phpunit-mock-objects 4.0.4 -> satisfiable by phpunit/phpunit-mock-objects[4.0.4].

Great!

After searching I came across a post with a lot of conversation form displeased developers. Basically, Doctrine had changed their minimum acceptible version to PHP 7.1.

Regardless of nerd jargon and opinions, This broke my project and until I found the solution which is to force Composer to use PHP 7.

As a note, Wouldn’t it be great if there was an official repo for Ubuntu users that wasn’t tied to the OS version or a third party?

"config": { "platform": { "php": "7.0" } },

While this fix does work, I don’t feel that it’s a good solution because you have now locked your application into PHP 7.0 and this can cause you some issues later after you have long forgotten this little “adjustment”.

This isn’t the first time that a decision form the community had caused me issues. The maintainers of Lib SASS one fine day decided to remove our point release and then put it back and proceeded to do this a few times over the next couple of days wreaking havoc on my Docker builds.

When you look at all of these package tools you start to realize how many different people and processes that you rely on and or trust to do the right thing.

Remember the old days of downloading a zip and tossing in some kind of Lib folder?

Have you ever had a wrench thrown in your project by a package that you require or indirectly require?