overtrue / phplint

:bug: A tool that can speed up linting of php files by running several lint processes at once.
MIT License
988 stars 88 forks source link

Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". #191

Closed teal-bauer closed 1 year ago

teal-bauer commented 1 year ago

New Issue

Diagnose

If you use PHAR version of PHP Lint, please specify:

I downloaded the latest version, which is 9.0.4 at this time:

curl -Ls https://github.com/overtrue/phplint/releases/latest/download/phplint.phar -o phplint
Output of `phplint.phar --manifest` command ``` Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". You are running 8.0.28. in phar:///var/www/phplint/vendor/composer/platform_check.php on line 24 Call Stack: 0.0007 401104 1. {main}() /var/www/phplint:0 0.0088 935312 2. require('phar:///var/www/phplint/bin/phplint') /var/www/phplint:17 0.0092 1015968 3. require('phar:///var/www/phplint/vendor/autoload.php') phar:///var/www/phplint/bin/phplint:11 0.0092 1088896 4. ComposerAutoloaderInit50fd98c3738b6ce14acfa636801aebfd::getLoader() phar:///var/www/phplint/vendor/autoload.php:32 0.0093 1092944 5. require('phar:///var/www/phplint/vendor/composer/platform_check.php') phar:///var/www/phplint/vendor/composer/autoload_real.php:25 0.0093 1093520 6. trigger_error($message = 'Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". You are running 8.0.28.', $error_level = 256) phar:///var/www/phplint/vendor/composer/platform_check.php:24 ```

Summary

While the project README states that phplint 9.x is usable with PHP >= 8.0, running the PHAR fails with a Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". You are running 8.0.28

Expected behaviour

phplint 9.0.4 should run under php 8.0.28.

Actual behaviour

$ ../phplint -vvv

Box Requirements Checker
========================

> Using PHP 8.0.28
> PHP is using the following php.ini file:
  WARNING: No configuration file (php.ini) used by PHP!

> Checking Box requirements:
  ✔ The application requires the version "^8.0" or greater.
  ✔ The application requires the extension "json".

 [OK] Your system is ready to run the application.                                                                                                                                                                                                                                                                                                                                                               

Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". You are running 8.0.28. in phar:///var/www/phplint/vendor/composer/platform_check.php on line 24

Call Stack:
    0.0009     401096   1. {main}() /var/www/phplint:0
    0.0087     932136   2. require('phar:///var/www/phplint/bin/phplint') /var/www/phplint:17
    0.0092    1012792   3. require('phar:///var/www/phplint/vendor/autoload.php') phar:///var/www/phplint/bin/phplint:11
    0.0092    1085720   4. ComposerAutoloaderInit50fd98c3738b6ce14acfa636801aebfd::getLoader() phar:///var/www/phplint/vendor/autoload.php:32
    0.0093    1089768   5. require('phar:///var/www/phplint/vendor/composer/platform_check.php') phar:///var/www/phplint/vendor/composer/autoload_real.php:25
    0.0093    1090344   6. trigger_error($message = 'Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". You are running 8.0.28.', $error_level = 256) phar:///var/www/phplint/vendor/composer/platform_check.php:24
llaville commented 1 year ago

Hello,

First, Thanks to report this issue ! But I won't waste more time to fix it, and I 'll try to explain you why.

My suggestion, is if you really want to use a PHAR version of PHPLint 9.0 is to compile it yourself with BOX 3.16.0 (the lastest version that support PHP 8.0). The metadata in box.json config file will be ignored and considered as simple text.

Follows this steps :

curl -Ls https://github.com/box-project/box/releases/download/3.16.0/box.phar -o box-3.phar
chmod +x box-3.phar
./box-3.phar compile --config /absolute/path/to/phplint_clone/box.json

And used your fresh copy of PHPLint v9 (PHP 8.0 compatible) that may be found in your phplint clone.

Hope that will help you

teal-bauer commented 1 year ago

Yeah, very understandable, I also hope to move everything off PHP 8.0 soon. And yeah, that is helpful, but for the time being I've just downgraded to an older phplint as the easiest workaround.

llaville commented 1 year ago

Even if older versions are still identified as active support, this is only for help. I won't apply any fix code on them except for security if needed. Major version 9.0 is an homogeneous branch code with new feature.

teal-bauer commented 1 year ago

Gotcha! For our use case, I think it's fine, we're running v4.x in a Github workflow on self-hosted runners with our own code, but good to know.