roadrunner-php/version-checker
Lightweight RoadRunner + PHP version compatibility checker. Detects your installed PHP version and validates it against the RoadRunner runtime requirements, helping prevent mismatched upgrades and deployment issues in CI/CD or local environments.
Installation:
composer require roadrunner-php/version-checker
Add to composer.json under require-dev if only needed for local checks:
"require-dev": {
"roadrunner-php/version-checker": "^1.0"
}
Basic Usage:
use RoadRunner\VersionChecker\VersionChecker;
$checker = new VersionChecker();
$latestVersion = $checker->getLatestVersion(); // Returns string (e.g., "v1.0.0")
$isLatest = $checker->isLatest(); // Compares with your installed version
First Use Case:
if (!$checker->isLatest()) {
echo "⚠️ Outdated RoadRunner version detected! Latest: {$checker->getLatestVersion()}";
}
Automated Version Checks in Laravel:
bootstrap/app.php or a service provider to log warnings:
public function boot()
{
$checker = new VersionChecker();
if (!$checker->isLatest()) {
Log::warning("RoadRunner version outdated. Latest: {$checker->getLatestVersion()}");
}
}
Custom Version Comparison:
$checker = new VersionChecker();
$checker->setVersionComparator(function ($installed, $latest) {
return version_compare($installed, $latest, '>=');
});
Scheduled Checks:
scheduler (e.g., daily):
$schedule->command(function () {
$checker = new VersionChecker();
if (!$checker->isLatest()) {
// Send Slack/email notification
}
})->daily();
rr get-version for cross-verification.php artisan rr:check-version
// In a command class
protected function handle()
{
$checker = new VersionChecker();
$this->info("Latest RoadRunner version: {$checker->getLatestVersion()}");
$this->warn(!$checker->isLatest() ? 'Update recommended!' : 'Up to date!');
}
Network Dependencies:
getLatestVersion() requires internet access. Handle failures gracefully:
try {
$latest = $checker->getLatestVersion();
} catch (\Exception $e) {
$this->warn("Could not check version: " . $e->getMessage());
}
Version Format Assumptions:
v1.2.3). Custom formats may break comparisons.Caching:
$latest = Cache::remember('rr_latest_version', now()->addHours(1), function () {
return $checker->getLatestVersion();
});
$checker->setDebug(true);
$checker->setHttpClient(new MockHttpClient());
Custom Version Sources:
$checker->setVersionSource('https://custom-api.com/latest-rr-version');
Event-Based Notifications:
if (!$checker->isLatest()) {
event(new RoadRunnerOutdated($checker->getLatestVersion()));
}
Batch Checking:
$checker->addPackage('spatie/laravel-activitylog', 'v3.0.0');
$checker->checkAll();
How can I help you explore Laravel packages today?