Composer & Plesk, encountering PHP version difficulties - php

Am currently attempting to get my Laravel application running behind Plesk Onyx. Now when trying to run composer install, I get the following error messages:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for doctrine/inflector v1.3.0 -> satisfiable by doctrine/inflector[v1.3.0].
- doctrine/inflector v1.3.0 requires php ^7.1 -> your PHP version (7.0.27) does not satisfy that requirement.
Problem 2
- Installation request for symfony/css-selector v4.0.6 -> satisfiable by symfony/css-selector[v4.0.6].
- symfony/css-selector v4.0.6 requires php ^7.1.3 -> your PHP version (7.0.27) does not satisfy that requirement.
Problem 3
- Installation request for symfony/event-dispatcher v4.0.6 -> satisfiable by symfony/event-dispatcher[v4.0.6].
- symfony/event-dispatcher v4.0.6 requires php ^7.1.3 -> your PHP version (7.0.27) does not satisfy that requirement.
Problem 4
- Installation request for symfony/translation v4.0.6 -> satisfiable by symfony/translation[v4.0.6].
- symfony/translation v4.0.6 requires php ^7.1.3 -> your PHP version (7.0.27) does not satisfy that requirement.
Problem 5
- 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.27) does not satisfy that requirement.
Problem 6
- doctrine/inflector v1.3.0 requires php ^7.1 -> your PHP version (7.0.27) does not satisfy that requirement.
- laravel/framework v5.5.39 requires doctrine/inflector ~1.1 -> satisfiable by doctrine/inflector[v1.3.0].
- Installation request for laravel/framework v5.5.39 -> satisfiable by laravel/framework[v5.5.39].
OK. I understand the errors for sure. I run Debian 9 and "PHP by OS Vendor" is 7.0.27. However, I know that PHP 7.1+ (and even 7.2) is installed on the server, because Plesk'd let me choose (for domains and vhosts) these versions. My question now is: How can I tell composer to use a certain PHP version installed on the server, and how could this work under Debian with Plesk?
Edit: I did not install Composer globally. Just https://getcomposer.org/download/ "Command-line installation".

Here's how:
Find the PHP paths used by Plesk. In my case, this is /opt/plesk/php/. Inside this folder, there are the folders according to PHP versions installed: 7.0, 7.1, 7.2. So php composer.phar install becomes /opt/plesk/php/7.2/bin/php composer.phar install. & it works. :-)

You may use platform setting in composer.json to emulate PHP version:
"config": {
"platform": {
"php": "7.1"
}
},
Composer will assume that PHP version is 7.1 during installation and update, even if you're using 7.0 to actual install.
This will only affect Composer installation and update - if you want to run console commands of your app, you will need to use correct binary (same for web server). However setting this will make your Composer installs and updates more predictable, so it's worth doing it anyway.

Related

how to remove PHP version error on deployment

I am using Xampp for local development, and I am working on the Laravel application. Everything works fine on the local server, but I am unable to deploy it. I am getting this error:
Problem 1
- Installation request for symfony/css-selector v5.0.6 -> satisfiable by symfony/css-selector[v5.0.6].
- symfony/css-selector v5.0.6 requires php ^7.2.5 -> your PHP version (7.2.2) does not satisfy that requirement.
Problem 2
- Installation request for symfony/mime v5.0.6 -> satisfiable by symfony/mime[v5.0.6].
- symfony/mime v5.0.6 requires php ^7.2.5 -> your PHP version (7.2.2) does not satisfy that requirement.
Problem 3
- Installation request for symfony/service-contracts v2.0.1 -> satisfiable by symfony/service-contracts[v2.0.1].
- symfony/service-contracts v2.0.1 requires php ^7.2.5 -> your PHP version (7.2.2) does not satisfy that requirement.
Problem 4
- Installation request for symfony/translation-contracts v2.0.1 -> satisfiable by symfony/translation-contracts[v2.0.1].
- symfony/translation-contracts v2.0.1 requires php ^7.2.5 -> your PHP version (7.2.2) does not satisfy that requirement.
Problem 5
- symfony/mime v5.0.6 requires php ^7.2.5 -> your PHP version (7.2.2) does not satisfy that requirement.
- symfony/http-foundation v4.4.6 requires symfony/mime ^4.3|^5.0 -> satisfiable by symfony/mime[v5.0.6].
- Installation request for symfony/http-foundation v4.4.6 -> satisfiable by symfony/http-foundation[v4.4.6].
I am using Xampp version 7.2.28 and using Laravel Envoyer for deployment. How can I solve this? Any help would be highly appreciable.
Thats becuase the version you are using locally is newer than the version of on the server. so your installing dependencies for the newer version and then trying to install on a lower version. you should make sure that your local environments match the live enviornment as much as possible, using Docker is quite handy for this.
Your possible solutions are:
Upgrade the PHP version on the live server
Downgrade the PHP version on your local to match production and adjust the dependencies accordingly
Set versions of your dependencies for the live system to compatible versions and re-install the dependencies
Downgrade your dependencies so that they can run on PHP 7.2.2 or later
The solution I would recommend is: "Downgrade your dependencies so that they can run on PHP 7.2.2 or later"
Note: I wouldn't actually recommend lowering your PHP version on the live system, but it is an option.

Is there a way to install older Laravel-Auditing versions?

I am using Laravel 5.4, PHP 7.0.30 and Ubuntu. As I type the command sudo composer require owen-it/laravel-auditing to install Laravel-Auditing, I get the following errors:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- symfony/css-selector v4.1.4 requires php ^7.1.3 -> your PHP version (7.0.30) does not satisfy that requirement.
- symfony/css-selector v4.1.4 requires php ^7.1.3 -> your PHP version (7.0.30) does not satisfy that requirement.
- symfony/css-selector v4.1.4 requires php ^7.1.3 -> your PHP version (7.0.30) does not satisfy that requirement.
- Installation request for symfony/css-selector == 4.1.4.0 -> satisfiable by symfony/css-selector[v4.1.4].
Installation failed, reverting ./composer.json to its original content.
It's not feasible to upgrade PHP version right now either.
Please help !

Composer: prevent updating packages that require higher PHP version

I'm using the doctrine/dbal (v2.4.*) package in my PHP project. My production server runs PHP v5.6.
I ran composer update this morning which updated my composer.lock file. Now, when I'm deploying to production, I see this:
Problem 1
- Installation request for doctrine/inflector v1.2.0 -> satisfiable by doctrine/inflector[v1.2.0].
- doctrine/inflector v1.2.0 requires php ^7.0 -> your PHP version (5.6.14) does not satisfy that requirement.
Problem 2
- doctrine/inflector v1.2.0 requires php ^7.0 -> your PHP version (5.6.14) does not satisfy that requirement.
- doctrine/common v2.4.3 requires doctrine/inflector 1.* -> satisfiable by doctrine/inflector[v1.2.0].
- Installation request for doctrine/common v2.4.3 -> satisfiable by doctrine/common[v2.4.3].
Specifically these:
doctrine/common v2.4.3 requires doctrine/inflector 1.* -> satisfiable by doctrine/inflector[v1.2.0].
doctrine/inflector v1.2.0 requires php ^7.0 -> your PHP version
(5.6.14) does not satisfy that requirement
This means, that even if dbal is old, it requires the newest common, and common requires the newest inflector package. Problem is that inflector started depending on PHP7 to run.
Is there any way in Composer to limit updating of the packages to those supported by specific PHP version? Like saying: "Please update what you can, but only if the server's PHP version is sufficient."
Use the platform option in your composer.json file to define the PHP version your production environment is using like this:
{
"config": {
"platform": {
"php": "5.6.14"
}
}
}
see https://getcomposer.org/doc/06-config.md#platform
Remove composer.lock file
Run composer install

Installing a specific PHP version with macports

I need to mimic my hosting environment, so composer and symfony would respect the environment.
My host is on PHP 7.0.6
And my local environment is on 7.0.21
During an upgrade doctrine/doctrine-bundle spits out an error
Problem 1
- This package requires php >=7.0.18 but your PHP version (7.0.6) does not satisfy that requirement.
Problem 2
- Installation request for ocramius/proxy-manager 2.0.4 -> satisfiable by ocramius/proxy-manager[2.0.4].
- ocramius/proxy-manager 2.0.4 requires php 7.0.0 - 7.0.5 || ^7.0.7 -> your PHP version (7.0.6) does not satisfy that requirement.
Problem 3
- doctrine/migrations v1.5.0 requires ocramius/proxy-manager ^1.0|^2.0 -> satisfiable by ocramius/proxy-manager[2.0.4].
- doctrine/migrations v1.5.0 requires ocramius/proxy-manager ^1.0|^2.0 -> satisfiable by ocramius/proxy-manager[2.0.4].
- ocramius/proxy-manager 2.0.4 requires php 7.0.0 - 7.0.5 || ^7.0.7 -> your PHP version (7.0.6) does not satisfy that requirement.
- Installation request for doctrine/migrations v1.5.0 -> satisfiable by doctrine/migrations[v1.5.0].
I followed these instructions https://trac.macports.org/wiki/howto/InstallingOlderPort
And tracked the proper version of macports https://github.com/macports/macports-ports/commit/99a636bc52126e82187694ad73c413e22d13f68c
so I ran
git clone --single-branch https://github.com/macports/macports-ports.git
cd macports-ports
git checkout 99a636bc52126e82187694ad73c413e22d13f68c
But I still have the same version of PHP
Any help would be really appreciated.

Issues installing Laravel/Spark Due to System PHP Version

I'm on a new development machine, and I'm having issues installing Laravel, Spark, or just about anything that requires anything newer than PHP 5.5.30.
The problem is, I'm using MAMP Pro which IS running PHP 7.0.1. I've also tried to update my system's PHP version to PHP 7 using this tutorial: https://coolestguidesontheplanet.com/upgrade-php-on-osx/
☁ /webroot spark new app
Crafting application...
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- This package requires php >=5.6.4 but your PHP version (5.5.30) does not satisfy that requirement.
Problem 2
- Installation request for laravel/framework v5.3.20 -> satisfiable by laravel/framework[v5.3.20].
- laravel/framework v5.3.20 requires php >=5.6.4 -> your PHP version (5.5.30) does not satisfy that requirement.
Problem 3
- Installation request for phpunit/php-code-coverage 4.0.1 -> satisfiable by phpunit/php-code-coverage[4.0.1].
- phpunit/php-code-coverage 4.0.1 requires php ^5.6 || ^7.0 -> your PHP version (5.5.30) does not satisfy that requirement.
Problem 4
- Installation request for phpunit/phpunit 5.6.2 -> satisfiable by phpunit/phpunit[5.6.2].
- phpunit/phpunit 5.6.2 requires php ^5.6 || ^7.0 -> your PHP version (5.5.30) does not satisfy that requirement.
Problem 5
- Installation request for phpunit/phpunit-mock-objects 3.4.0 -> satisfiable by phpunit/phpunit-mock-objects[3.4.0].
- phpunit/phpunit-mock-objects 3.4.0 requires php ^5.6 || ^7.0 -> your PHP version (5.5.30) does not satisfy that requirement.
Problem 6
- Installation request for sebastian/code-unit-reverse-lookup 1.0.0 -> satisfiable by sebastian/code-unit-reverse-lookup[1.0.0].
- sebastian/code-unit-reverse-lookup 1.0.0 requires php >=5.6 -> your PHP version (5.5.30) does not satisfy that requirement.
Problem 7
- Installation request for sebastian/object-enumerator 1.0.0 -> satisfiable by sebastian/object-enumerator[1.0.0].
- sebastian/object-enumerator 1.0.0 requires php >=5.6 -> your PHP version (5.5.30) does not satisfy that requirement.
Problem 8
- Installation request for sebastian/resource-operations 1.0.0 -> satisfiable by sebastian/resource-operations[1.0.0].
- sebastian/resource-operations 1.0.0 requires php >=5.6.0 -> your PHP version (5.5.30) does not satisfy that requirement.
Problem 9
- Installation request for sebastian/version 2.0.0 -> satisfiable by sebastian/version[2.0.0].
- sebastian/version 2.0.0 requires php >=5.6 -> your PHP version (5.5.30) does not satisfy that requirement.
Application ready! Build something amazing.
Downloading Spark...
I don't want to just bypass the required PHP version by editing in the composer file, because I'm not sure if it's causing problems when installing apps or not. None of my Spark or Laravel installations work, they just give a 500 status error, it could be something else, but I was assuming it was this same problem.
All fixed.
Thanks #Kyslik for your suggestion.
I had previously tried updating my PATH, but for some reason it worked this time. I must have made a mistake before. For reference of anyone else having this issue, I followed this:
How to override the path of PHP to use the MAMP path?

Categories