Skip to content

Commit

Permalink
Allow autoload to run on 5.6 still, add early exits when running comp…
Browse files Browse the repository at this point in the history
…oser or autoload.php with outdated PHP versions, fixes composer#10714, refs composer#10709
  • Loading branch information
Seldaek authored and emahorvat52 committed Jan 18, 2023
1 parent 0a4d95c commit 296d7b4
Show file tree
Hide file tree
Showing 11 changed files with 33 additions and 7 deletions.
5 changes: 5 additions & 0 deletions bin/composer
Expand Up @@ -5,6 +5,11 @@ if (PHP_SAPI !== 'cli' && PHP_SAPI !== 'phpdbg') {
echo 'Warning: Composer should be invoked via the CLI version of PHP, not the '.PHP_SAPI.' SAPI'.PHP_EOL;
}

if (PHP_VERSION_ID < 70205) {
echo 'Composer 2.3.0 dropped support for PHP <7.2.5 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
}

setlocale(LC_ALL, 'C');
require __DIR__.'/../src/bootstrap.php';

Expand Down
8 changes: 7 additions & 1 deletion src/Composer/Autoload/AutoloadGenerator.php
Expand Up @@ -924,6 +924,11 @@ protected function getAutoloadFile($vendorPathToTargetDirCode, $suffix)
// autoload.php @generated by Composer
if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
}
require_once $vendorPathToTargetDirCode;
return ComposerAutoloaderInit$suffix::getLoader();
Expand Down Expand Up @@ -1000,9 +1005,10 @@ public static function getLoader()
INCLUDE_PATH;
}

// keeping PHP 5.6+ compatibility for the autoloader here by using call_user_func vs getInitializer()()
$file .= <<<STATIC_INIT
require __DIR__ . '/autoload_static.php';
\Composer\Autoload\ComposerStaticInit$suffix::getInitializer(\$loader)();
call_user_func(\Composer\Autoload\ComposerStaticInit$suffix::getInitializer(\$loader));
STATIC_INIT;
Expand Down
5 changes: 5 additions & 0 deletions tests/Composer/Test/Autoload/Fixtures/autoload_functions.php
Expand Up @@ -2,6 +2,11 @@

// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
}

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInitFilesAutoload::getLoader();
Expand Up @@ -2,6 +2,11 @@

// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
}

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInitFilesAutoloadOrder::getLoader();
Expand Up @@ -27,7 +27,7 @@ public static function getLoader()
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoloadOrder', 'loadClassLoader'));

require __DIR__ . '/autoload_static.php';
\Composer\Autoload\ComposerStaticInitFilesAutoloadOrder::getInitializer($loader)();
call_user_func(\Composer\Autoload\ComposerStaticInitFilesAutoloadOrder::getInitializer($loader));

$loader->register(true);

Expand Down
Expand Up @@ -27,7 +27,7 @@ public static function getLoader()
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'));

require __DIR__ . '/autoload_static.php';
\Composer\Autoload\ComposerStaticInitFilesAutoload::getInitializer($loader)();
call_user_func(\Composer\Autoload\ComposerStaticInitFilesAutoload::getInitializer($loader));

$loader->register(true);

Expand Down
Expand Up @@ -31,7 +31,7 @@ public static function getLoader()
set_include_path(implode(PATH_SEPARATOR, $includePaths));

require __DIR__ . '/autoload_static.php';
\Composer\Autoload\ComposerStaticInitFilesAutoload::getInitializer($loader)();
call_user_func(\Composer\Autoload\ComposerStaticInitFilesAutoload::getInitializer($loader));

$loader->register(true);

Expand Down
Expand Up @@ -27,7 +27,7 @@ public static function getLoader()
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'));

require __DIR__ . '/autoload_static.php';
\Composer\Autoload\ComposerStaticInitFilesAutoload::getInitializer($loader)();
call_user_func(\Composer\Autoload\ComposerStaticInitFilesAutoload::getInitializer($loader));

$loader->register(true);

Expand Down
Expand Up @@ -27,7 +27,7 @@ public static function getLoader()
spl_autoload_unregister(array('ComposerAutoloaderInitIncludePath', 'loadClassLoader'));

require __DIR__ . '/autoload_static.php';
\Composer\Autoload\ComposerStaticInitIncludePath::getInitializer($loader)();
call_user_func(\Composer\Autoload\ComposerStaticInitIncludePath::getInitializer($loader));

$loader->setUseIncludePath(true);
spl_autoload_register(array('ComposerAutoloaderInitIncludePath', 'autoload'), true, true);
Expand Down
Expand Up @@ -27,7 +27,7 @@ public static function getLoader()
spl_autoload_unregister(array('ComposerAutoloaderInitTargetDir', 'loadClassLoader'));

require __DIR__ . '/autoload_static.php';
\Composer\Autoload\ComposerStaticInitTargetDir::getInitializer($loader)();
call_user_func(\Composer\Autoload\ComposerStaticInitTargetDir::getInitializer($loader));

spl_autoload_register(array('ComposerAutoloaderInitTargetDir', 'autoload'), true, true);

Expand Down
5 changes: 5 additions & 0 deletions tests/Composer/Test/Autoload/Fixtures/autoload_target_dir.php
Expand Up @@ -2,6 +2,11 @@

// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
}

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInitTargetDir::getLoader();

0 comments on commit 296d7b4

Please sign in to comment.