Craft Server Check
A standalone checker that verifies whether a web server meets the minimum requirements to run Craft CMS.
Repository Health
Technical Analysis
Craft Server Check (craftcms/server-check) is a small, dependency-free utility that validates whether a web server satisfies the PHP version, extension, and configuration requirements needed to run Craft CMS. It can be run as a one-line shell script, uploaded as a web page for an HTML report, or executed on the command line for a plain-text report.
Because it returns meaningful shell exit codes and supports a strict mode that fails on warnings, it fits naturally into CI/CD pipelines and Dockerfiles where a build should abort if the target environment cannot host Craft. The checker is maintained by the Craft CMS team and mirrors the exact requirements Craft itself enforces.
What You Get
- A one-line curl-to-bash command for instant server checks
- A web report (checkit.php) that renders results as HTML in a browser
- A CLI report mode producing plain-text output over SSH
- Standardized shell exit codes (0 pass, 1 fail) for automation
- A strict mode (CRAFT_STRICT_SERVER_CHECK) that fails on warnings
Common Use Cases
- Verifying a fresh server or container before deploying Craft CMS
- Gating a CI/CD pipeline or Dockerfile build on environment readiness
- Diagnosing why a Craft installation fails on an unfamiliar host
- Giving clients a browser-based report of their hosting compatibility
Under The Hood
Architecture - The core is a single RequirementsChecker class (server/requirements/RequirementsChecker.php) driven by a declarative requirements.php list. Each requirement defines a condition, a mandatory flag, and pass/warn/error messaging. Three thin entry points wrap the checker: check.sh for the curl-piped shell flow, checkit.php as the dispatcher, and console/web view templates that render the results as plain text or HTML.
Tech Stack - Written in PHP with a small Bash bootstrap (check.sh). It has no Composer runtime dependencies and uses a classmap autoload of server/requirements. The requirements definitions mirror the Yii2/Craft server requirement conventions. The GitHub language stat reports Hack because of PHP syntax detection, but the code is standard PHP.
Code Quality - The project is deliberately minimal and stable, with a long changelog reflecting careful maintenance against successive Craft versions. There is no automated test suite (as expected for a self-contained checker), but the logic is straightforward and the requirement definitions are readable and well-commented.
API Design - As a tool rather than a library, its interface is its invocation surface: a memorable curl one-liner, an uploadable folder, and a CLI command, all producing consistent reports and exit codes. The strict-mode environment variable and standardized exit codes give it a clean, automation-friendly contract with minimal learning curve.