45 lines
1.1 KiB
PHP
45 lines
1.1 KiB
PHP
#!/usr/bin/env php
|
|||
|
|
<?php
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Verify the running PHP environment meets the declared runtime requirements.
|
||
|
|
*
|
||
|
|
* Reads config/requirements.php and checks the PHP version and that every
|
||
|
|
* required extension is loaded. Exits non-zero (failing CI) on any miss.
|
||
|
|
*
|
||
|
|
* Usage: php scripts/check_requirements.php
|
||
|
|
*/
|
||
|
|
|
||
|
|
$req = require __DIR__ . '/../config/requirements.php';
|
||
|
|
|
||
|
|
$errors = [];
|
||
|
|
|
||
|
|
// PHP version
|
||
|
|
$minPhp = $req['min_php_version'];
|
||
|
|
if (version_compare(PHP_VERSION, $minPhp, '<')) {
|
||
|
|
$errors[] = sprintf('PHP %s is below the required minimum %s', PHP_VERSION, $minPhp);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Required extensions
|
||
|
|
foreach ($req['required_extensions'] as $ext) {
|
||
|
|
if (!extension_loaded($ext)) {
|
||
|
|
$errors[] = sprintf('Missing required PHP extension: %s', $ext);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!empty($errors)) {
|
||
|
|
fwrite(STDERR, "Requirement check FAILED:\n");
|
||
|
|
foreach ($errors as $err) {
|
||
|
|
fwrite(STDERR, ' - ' . $err . "\n");
|
||
|
|
}
|
||
|
|
exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
printf(
|
||
|
|
"Requirement check passed: PHP %s (>= %s); extensions: %s\n",
|
||
|
|
PHP_VERSION,
|
||
|
|
$minPhp,
|
||
|
|
implode(', ', $req['required_extensions'])
|
||
|
|
);
|
||
|
|
exit(0);
|