llaville / php-compatinfo

Library that find out the minimum version and the extensions required for a piece of code to run
https://llaville.github.io/php-compatinfo/7.1/
Other
371 stars 21 forks source link

New error on 6.0.2 #315

Closed LucasKovacs closed 2 years ago

LucasKovacs commented 2 years ago

Bug report

OS

  1. Host operating system and version: Ubuntu 20
  2. PHP version: PHP 8
  3. PHP CompatInfo version: 6.0.2
  4. What git commit hash are you on?:
  5. PHP extensions loaded? Uses either reference:list or db:list command depends on CompatInfo version:

Summary

After updating to 6.0.2 I still have issues:

[ERROR] Handling "Bartlett\CompatInfo\Application\Query\Analyser\Compatibility\GetCompatibilityQuery" failed: An       
         exception occurred in the driver: SQLSTATE[HY000] [14] unable to open database file                            

Script vendor/bin/phpcompatinfo analyser:run ./src handling the phpcompatinfo event returned with error code 1

Expected behaviour

I can run the analyzer

Actual behaviour

I can't run the analyzer

Other information

llaville commented 2 years ago

@LucasKovacs Please report explicitly all steps your're done.

If you follow procedure I've given (https://github.com/llaville/php-compatinfo/issues/313#issuecomment-1001446476) without apply the patch of course now v6.0.2 is available, you should be able to use CompatInfo v6 !

LucasKovacs commented 2 years ago

I will try that and report back

LucasKovacs commented 2 years ago

I tried the steps on that comment but got another error

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /Users/Documents/workspace.nosync/own/XG-Proyect-v3.x.x/src/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php on line 711

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /Users/Documents/workspace.nosync/own/XG-Proyect-v3.x.x/src/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php on line 711
llaville commented 2 years ago

@LucasKovacs sorry, but I can't help you, if you provide so few info. Please, tell me the list of action you've done

LucasKovacs commented 2 years ago

I did step by step what you wrote here https://github.com/llaville/php-compatinfo/issues/313#issuecomment-1001446476, and it failed when I ran bin/compatinfo-db db:init with that error

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /Users/Documents/workspace.nosync/own/XG-Proyect-v3.x.x/src/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php on line 711

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /Users/Documents/workspace.nosync/own/XG-Proyect-v3.x.x/src/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php on line 711

My PHP version is 8.1.1, composer 2.2.3

llaville commented 2 years ago

Give me the content of following command in your project where you've installed php-compatinfo : composer show

LucasKovacs commented 2 years ago
bartlett/php-compatinfo              6.0.2     Find out the minimum version and the extensions required for a piece of code to run
bartlett/php-compatinfo-db           3.16.1    Reference Database of all functions, constants, classes, interfaces on PHP standard distribution and about 110 extensions
brick/math                           0.9.3     Arbitrary-precision arithmetic library
composer/package-versions-deprecated 1.11.99.4 Composer plugin that provides efficient querying for installed package versions (no runtime IO)
composer/semver                      3.2.6     Semver library that offers utilities, version constraint parsing and validation.
doctrine/annotations                 1.13.2    Docblock Annotations Parser
doctrine/cache                       2.1.1     PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache...
doctrine/collections                 1.6.8     PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.
doctrine/common                      3.2.1     PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on su...
doctrine/dbal                        3.2.0     Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.
doctrine/deprecations                v0.5.3    A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or sel...
doctrine/event-manager               1.1.1     The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.
doctrine/inflector                   2.0.4     PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singul...
doctrine/instantiator                1.4.0     A small, lightweight utility to instantiate objects in PHP without invoking their constructors
doctrine/lexer                       1.2.1     PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.
doctrine/orm                         2.10.4    Object-Relational-Mapper for PHP
doctrine/persistence                 2.2.3     The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappe...
eftec/bladeone                       4.2       The standalone version Blade Template Engine from Laravel in a single php file
myclabs/deep-copy                    1.10.2    Create deep copies (clones) of your objects
nikic/php-parser                     v4.13.2   A PHP parser written in PHP
phar-io/manifest                     2.0.3     Component for reading phar.io manifest information from a PHP Archive (PHAR)
phar-io/version                      3.1.0     Library for handling version information and constraints
phpdocumentor/reflection-common      2.2.0     Common reflection classes used by phpdocumentor to reflect the code structure
phpdocumentor/reflection-docblock    5.3.0     With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that i...
phpdocumentor/type-resolver          1.5.1     A PSR-5 based resolver of Class names, Types and Structural Element Names
phpmailer/phpmailer                  v6.5.3    PHPMailer is a full-featured email creation and transfer class for PHP
phpspec/prophecy                     v1.15.0   Highly opinionated mocking framework for PHP 5.3+
phpunit/php-code-coverage            7.0.15    Library that provides collection, processing, and rendering functionality for PHP code coverage information.
phpunit/php-file-iterator            2.0.5     FilterIterator implementation that filters files based on a list of suffixes.
phpunit/php-text-template            1.2.1     Simple template engine.
phpunit/php-timer                    2.1.3     Utility class for timing
phpunit/php-token-stream             4.0.4     Wrapper around PHP's tokenizer extension.
phpunit/phpunit                      8.5.22    The PHP Unit Testing framework.
psr/cache                            2.0.0     Common interface for caching libraries
psr/container                        1.1.2     Common Container Interface (PHP FIG PSR-11)
psr/event-dispatcher                 1.0.0     Standard interfaces for event handling.
psr/log                              1.1.4     Common interface for logging libraries
ramsey/collection                    1.2.2     A PHP library for representing and manipulating collections.
ramsey/uuid                          4.2.3     A PHP library for generating and working with universally unique identifiers (UUIDs).
sebastian/code-unit-reverse-lookup   1.0.2     Looks up which function or method a line of code belongs to
sebastian/comparator                 3.0.3     Provides the functionality to compare PHP values for equality
sebastian/diff                       3.0.3     Diff implementation
sebastian/environment                4.2.4     Provides functionality to handle HHVM/PHP environments
sebastian/exporter                   3.1.4     Provides the functionality to export PHP variables for visualization
sebastian/global-state               3.0.1     Snapshotting of global state
sebastian/object-enumerator          3.0.4     Traverses array structures and object graphs to enumerate all referenced objects
sebastian/object-reflector           1.1.2     Allows reflection of object attributes, including inherited and non-public ones
sebastian/recursion-context          3.0.1     Provides functionality to recursively process PHP variables
sebastian/resource-operations        2.0.2     Provides a list of PHP built-in functions that operate on resources
sebastian/type                       1.1.4     Collection of value objects that represent the types of the PHP type system
sebastian/version                    2.0.1     Library that helps with managing the version number of Git-hosted PHP projects
squizlabs/php_codesniffer            3.6.2     PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.
symfony/amqp-messenger               v5.4.0    Symfony AMQP extension Messenger Bridge
symfony/cache                        v5.4.2    Provides an extended PSR-6, PSR-16 (and tags) implementation
symfony/cache-contracts              v2.5.0    Generic abstractions related to caching
symfony/config                       v5.4.2    Helps you find, load, combine, autofill and validate configuration values of any kind
symfony/console                      v5.4.2    Eases the creation of beautiful and testable command line interfaces
symfony/dependency-injection         v5.4.2    Allows you to standardize and centralize the way objects are constructed in your application
symfony/deprecation-contracts        v3.0.0    A generic function and convention to trigger deprecation notices
symfony/doctrine-messenger           v6.0.2    Symfony Doctrine Messenger Bridge
symfony/event-dispatcher             v5.4.0    Provides tools that allow your application components to communicate with each other by dispatching events and listening ...
symfony/event-dispatcher-contracts   v3.0.0    Generic abstractions related to dispatching event
symfony/filesystem                   v6.0.0    Provides basic utilities for the filesystem
symfony/finder                       v5.4.2    Finds files and directories via an intuitive fluent interface
symfony/messenger                    v5.4.2    Helps applications send and receive messages to/from other applications or via message queues
symfony/polyfill-ctype               v1.23.0   Symfony polyfill for ctype functions
symfony/polyfill-intl-grapheme       v1.23.1   Symfony polyfill for intl's grapheme_* functions
symfony/polyfill-intl-normalizer     v1.23.0   Symfony polyfill for intl's Normalizer class and related functions
symfony/polyfill-mbstring            v1.23.1   Symfony polyfill for the Mbstring extension
symfony/polyfill-php72               v1.23.0   Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions
symfony/polyfill-php73               v1.23.0   Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions
symfony/polyfill-php80               v1.23.1   Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions
symfony/polyfill-php81               v1.23.0   Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions
symfony/process                      v5.4.2    Executes commands in sub-processes
symfony/redis-messenger              v5.4.2    Symfony Redis extension Messenger Bridge
symfony/requirements-checker         v2.0.1    Check Symfony requirements and give recommendations
symfony/serializer                   v5.4.2    Handles serializing and deserializing data structures, including object graphs, into array structures or other formats li...
symfony/service-contracts            v2.4.1    Generic abstractions related to writing services
symfony/stopwatch                    v5.4.0    Provides a way to profile code
symfony/string                       v6.0.2    Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way
symfony/var-exporter                 v6.0.0    Allows exporting any serializable PHP data structure to plain PHP code
theseer/tokenizer                    1.2.1     A small library for converting tokenized PHP source code into XML and potentially other formats
webmozart/assert                     1.10.0    Assertions to validate method input/output with nice error messages.
llaville commented 2 years ago

if your project is open source, could you provide url of repository

LucasKovacs commented 2 years ago

Sure, here https://github.com/XGProyect/XG-Proyect-v3.x.x/tree/xgp-3.3

llaville commented 2 years ago

It's not a bug but a process installation that should be adapt to reflect your current vendor-dir configuration https://github.com/XGProyect/XG-Proyect-v3.x.x/blob/xgp-3.3/composer.json#L48

If I try something equivalent to your project, here is what I get :

{
    "require": {
        "bartlett/php-compatinfo": "^6.0"
    },
    "config": {
        "vendor-dir": "src/vendor"
    }
}
.
├── composer.json
├── composer.lock
└── src
    └── vendor
        ├── autoload.php
        ├── bartlett
        ├── bin
        ├── brick
        ├── composer
        ├── doctrine
        ├── nikic
        ├── psr
        ├── ramsey
        └── symfony

11 directories, 3 files
mkdir -p ${HOME}/.cache/bartlett/ && touch ${HOME}/.cache/bartlett/compatinfo-db.sqlite

export DATABASE_URL=sqlite:///${HOME}/.cache/bartlett/compatinfo-db.sqlite

cd src/vendor/bartlett/php-compatinfo-db/
../../bin/doctrine orm:schema-tool:create
bin/compatinfo-db db:init
cd ../../../..
src/vendor/bin/phpcompatinfo diagnose

src/vendor/bin/phpcompatinfo --version

phpCompatInfo version 6.0.3 DB version 3.16.1

All LGTM. So If you want to custom the vendor directory it's your choice, but please adapt the install procedure corresponding to the new path !

As it's not a but, I'll close this report !