composer / composer

Dependency Manager for PHP
https://getcomposer.org/
MIT License
28.57k stars 4.54k forks source link

composer install fail: preg_match compilation fail #11338

Closed rust17 closed 1 year ago

rust17 commented 1 year ago

My composer.json:

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "php": "^8.1",
        "guzzlehttp/guzzle": "^7.2",
        "laravel/framework": "^10.0",
        "laravel/sanctum": "^3.2",
        "laravel/tinker": "^2.8"
    },
    "require-dev": {
        "fakerphp/faker": "^1.9.1",
        "laravel/pint": "^1.0",
        "laravel/sail": "^1.18",
        "mockery/mockery": "^1.4.4",
        "nunomaduro/collision": "^7.0",
        "phpunit/phpunit": "^10.0",
        "spatie/laravel-ignition": "^2.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-update-cmd": [
            "@php artisan vendor:publish --tag=laravel-assets --ansi --force"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true,
        "allow-plugins": {
            "pestphp/pest-plugin": true,
            "php-http/discovery": true
        }
    },
    "minimum-stability": "stable",
    "prefer-stable": true
}

Output of composer diagnose:

Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK git version 2.25.1
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: 
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
OK
Checking composer version: OK
Composer version: 2.5.4
PHP version: 8.2.3-dev
PHP binary path: /usr/local/bin/php
OpenSSL version: OpenSSL 1.1.1f  31 Mar 2020
cURL version: 7.68.0 libz 1.2.11 ssl OpenSSL/1.1.1f
zip: extension present, unzip present, 7-Zip not available

When I run this command:

composer install -vvv

I get the following output:

Generating optimized autoload files

In Preg.php line 430:

  [ErrorException]                                                                                  
  preg_match(): Compilation failed: internal error in pcre2_study(): should not occur at offset 76  

Exception trace:
  at phar:///usr/local/bin/composer/vendor/composer/pcre/src/Preg.php:430
 Composer\Util\ErrorHandler::handle() at n/a:n/a
 preg_match() at phar:///usr/local/bin/composer/vendor/composer/pcre/src/Preg.php:430
 Composer\Pcre\Preg::pregMatch() at phar:///usr/local/bin/composer/vendor/composer/pcre/src/Preg.php:33
 Composer\Pcre\Preg::match() at phar:///usr/local/bin/composer/vendor/composer/pcre/src/Preg.php:291
 Composer\Pcre\Preg::isMatch() at phar:///usr/local/bin/composer/vendor/composer/class-map-generator/src/PhpFileCleaner.php:245
 Composer\ClassMapGenerator\PhpFileCleaner->match() at phar:///usr/local/bin/composer/vendor/composer/class-map-generator/src/PhpFileCleaner.php:101
 Composer\ClassMapGenerator\PhpFileCleaner->clean() at phar:///usr/local/bin/composer/vendor/composer/class-map-generator/src/PhpFileParser.php:61
 Composer\ClassMapGenerator\PhpFileParser::findClasses() at phar:///usr/local/bin/composer/vendor/composer/class-map-generator/src/ClassMapGenerator.php:176
 Composer\ClassMapGenerator\ClassMapGenerator->scanPaths() at phar:///usr/local/bin/composer/src/Composer/Autoload/AutoloadGenerator.php:314
 Composer\Autoload\AutoloadGenerator->dump() at phar:///usr/local/bin/composer/src/Composer/Installer.php:349
 Composer\Installer->run() at phar:///usr/local/bin/composer/src/Composer/Command/InstallCommand.php:146
 Composer\Command\InstallCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php:298
 Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:1040
 Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:301
 Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:377
 Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:171
 Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:141
 Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:88
 require() at /usr/local/bin/composer:29

And I expected this to happen: composer install work

stof commented 1 year ago

This looks like a bug in the PCRE2 version you use, or maybe in the PHP code wrapping it to implement preg_match.

An error message saying reg_match(): Compilation failed: internal error in pcre2_study(): should not occur at offset 76 makes me thing this is a bug in PCRE2 itself due to the internal error in pcre2_study(): should not occur part.

rust17 commented 1 year ago

Already try to update libpcre2-dev and libpcre3-dev. pcre2-config version is 10.34. pcre-config version is 8.39. Also try different php version(8.2.0、8.2.3). Still same error. Is there any suggestions?

rust17 commented 1 year ago

When I update to php 8.2.4-dev, it works.