Compatibility target
The application targets PHP 8.1 or newer. That keeps the code modern enough for typed properties, constructor promotion, match, and array_is_list, while avoiding a hard dependency on PHP 8.3.
Host assumptions
| Concern | Expected handling |
|---|---|
| rewrites | Apache/LiteSpeed .htaccess routes non-file requests to index.php |
| static assets | /assets served directly |
| private folders | .htaccess blocks direct access |
| logs | PHP writes to storage/logs when writable, otherwise host error log |
| env vars | optional; safe defaults exist |
| database | not required |
| Composer | not required |
Common failure symptoms
| Symptom | Likely cause | Fix |
|---|---|---|
Index of / | no root index.php or wrong extraction path | extract v1.2.1 directly into domain root |
| HTTP 500 | PHP version too old or parse/runtime error | set PHP 8.1+ and check error log |
| unstyled page | assets path missing | confirm /assets/css/app.css exists |
| links 404 | rewrites disabled | enable .htaccess rewrite support |
| raw folders visible | .htaccess ignored | use Apache/LiteSpeed or server-level deny rules |
PROCEDURE diagnose_shared_host()
IF GET("/").body CONTAINS "Index of /"
RETURN "root index missing or package extracted one level too high"
IF GET("/health").status == 500
RETURN "check PHP version and application error log"
IF GET("/assets/css/app.css").status != 200
RETURN "assets were not extracted to root assets folder"
IF GET("/docs/").status == 200
RETURN "private folder deny rules are not active"
RETURN "basic shared-hosting checks passed"
END PROCEDUREProduction setting
Keep APP_DEBUG=0. A detailed exception page is useful locally but not on a public host. If environment variables are unavailable, leave debug off and use the host control panel to inspect errors.