Find out the minimum version and the extensions required for a piece of code to run

5.5.3 2021-05-03 06:06 UTC


Stable Upcoming
Latest Stable Version Unstable Version
Minimum PHP Version) Minimum PHP Version)
Branch Master Branch 6.0

PHP CompatInfo is a library that can find the minimum version and the extensions required for a piece of code to run.

Running on PHP greater than 7.2 for parsing source code in a format PHP 5.2 to PHP 8.0


  • PHP 7.2 or greater
  • PHPUnit 7 or greater (if you want to run unit tests)


The recommended way to install this library is through composer. If you don't know yet what is composer, have a look on introduction.

composer require bartlett/php-compatinfo

Configuring the Database

The database connection information is stored as an environment variable called DATABASE_URL.

# to use mysql:

# to use mariadb:

# to use sqlite:
# DATABASE_URL="sqlite:///${HOME}/.cache/bartlett/compatinfo-db.sqlite"

# to use postgresql:
# DATABASE_URL="postgresql://db_user:db_password@"

If you change database connection, you have to run following commands:

  • vendor/bin/doctrine orm:schema-tool:create
  • vendor/bartlett/php-compatinfo-db/bin/compatinfo-db db:init

At dependencies installation, Composer use the sqlite back-end. You need to set up in your environment the DATABASE_URL variable.

If you use sqlite default back-end, you MUST run composer run post-install-cmd command.

Build PHAR distribution

Uses the BOX to compile your phar version of application. Configuration file (box.json.dist) is provided with each release of phpCompatInfo.


Full documentation is written in MarkDown format, and HTML export is possible with See output results at or raw *.md files in docs folder.

Table of Contents

  • Features

    • Parse source code in format PHP 5.2 to PHP 8.0
    • Detect PHP features for each Major/minor versions
    • Detect versions of all directives, constants, functions, classes, interfaces of 100 extensions and more
    • Display/Inspect list of extensions, and their versions supported
  • Components

  • Configurations

    • Use of PSR11 containers to configure application services.


  • Laurent Laville (Lead Dev)
  • Thanks to Nikita Popov who wrote a marvellous PHP Parser.
  • Thanks also to Remi Collet, a contributor of first hours.
  • Credits to Davey Shafik. He introduced his proposal in 2004, that gave birth of a PEAR package named PHP_CompatInfo.


This project is licensed under the BSD-3-Clause License - see the LICENSE file for details