Requirements & Compatibility
Core requirements
| Requirement | Supported |
|---|---|
| PHP | ^8.3 — tested in CI on 8.3, 8.4, and 8.5 |
| Laravel Framework | ^12.0 or ^13.0 |
| Composer | 2.4+ (only needed for the security audit) |
These come from composer.json:
json
"require": {
"php": "^8.3",
"laravel/framework": "^12.0|^13.0",
"symfony/process": "^7.2|^8.0"
}Optional capabilities and their requirements
| Capability | Requirement | Behavior if missing |
|---|---|---|
| Browser-triggered Artisan actions (clear caches, optimize, migrate, maintenance mode, storage link) | pcntl functions available to the web SAPI (PHP-FPM / mod_php) | Many PHP-FPM builds disable pcntl for the web SAPI by default. Without it, these actions are disabled in the UI with an explanation; only the self-bounded security_scan operation still runs from the browser. Run the equivalent php artisan command from the CLI instead. See Execution environments. |
Security audit (opconsole:security) | Composer 2.4+ and a composer.lock in the host application | The audit command and the Security tab report a clear failure instead of partial or fabricated results. |
| Octane and Swoole checks | Laravel Octane installed | When Octane isn't installed, OpConsole adds nothing — no extra health group, no System card, no reload action. See Octane & Swoole. |
| Queue worker heartbeat | A queue driver other than sync/null, and a running worker | With sync/null, the check is skipped with an informational status rather than reported as unhealthy. |
| Scheduler heartbeat | The Laravel scheduler (schedule:run) actually running every minute | Without it, the check reads unknown until the first beat. |
CI verification matrix
The package's own GitHub Actions workflow (.github/workflows/tests.yml) runs the full test suite and static analysis across:
- PHP:
8.3,8.4,8.5 - Laravel:
12.*,13.* - Dependency resolution:
prefer-stable,prefer-lowest
It also runs a clean-install smoke test: a fresh laravel/laravel application (built separately for Laravel ^12.0 and ^13.0) installs OpConsole via a path repository, publishes config and assets, migrates, caches config/routes/views, and confirms the routes are registered — the same steps a real installation goes through.
Platform notes
- Windows:
pcntldoes not exist on Windows PHP builds, so browser-triggered timer-bound actions behave the same as PHP-FPM withoutpcntl— onlysecurity_scanruns from the browser. - Multi-server deployments: the default file-based action lock only coordinates requests on a single server sharing the same filesystem. See Permissions & Security Policies for configuring a shared Redis or database lock store.