v0.31.11.0 — Installer Recovery & Hardening
·
19 commits
to master
since this release
This release fixes two installation-blocking regressions reported by the community: the web installer returned 404 after step 1, and the CLI installer aborted on migration. Both installation paths are now functional on every supported MySQL/MariaDB version, and the installer's HTTP attack surface has been reduced.
Highlights
- Web installer recovered — no more
404: GET install/dbsetupafter submitting the install form - CLI installer recovered —
php spark ci4ms:setupnow runs migrations successfully on MySQL 5.7+, MariaDB 10.x, and strict-mode installs - Installer attack surface reduced —
dbsetupis no longer a public endpoint
Fixed
- CRITICAL — Web Installer Broken (
404 GET install/dbsetup):Install::index()redirected toinstall/dbsetupvia HTTP 302 (which the browser follows withGET), but the route was registered asPOST-only. Every fresh web installation aborted with404 — Can't find a route for 'GET: install/dbsetup'. The two-step flow also relied on flashdata that could be lost across the redirect on some session drivers.index()now callsdbsetup($installData)directly in the same request, and theinstall/dbsetuproute has been removed. - CRITICAL — CLI Migration Failure (
profileIMG can't have a default value): Theuserstable migration declaredprofileIMGasTEXT NOT NULLwith a stringdefault. MySQL/MariaDB reject this withBLOB, TEXT, GEOMETRY or JSON column 'profileIMG' can't have a default valueon every server version that does not silently relax the rule.php spark ci4ms:setupaborted at Step 5/6 before the database was usable. Changed toVARCHAR(255) NULLso the default URL is preserved and the migration succeeds everywhere.
Changed
- Install Controller Hardening:
Install::dbsetup()is nowprivateand accepts the installation payload as a typedarrayparameter, removing the externally callable seed endpoint, the flashdata round-trip, and the empty-payload guard. Theinstall_dbsetuproute alias and itsrole=createpermission are gone, shrinking the installer's attack surface to a single endpoint protected byInstallFilter. - Version Bump:
app.versionnow defaults to0.31.11.0in bothInstall::index()andCi4msSetup::run().
Upgrade Notes
- Existing installations: No action required. This release only affects the installer (
/installandphp spark ci4ms:setup). Existingusers.profileIMGcolumns are not migrated. - Fresh installations: Both the web installer (
/install) and the CLI installer (php spark ci4ms:setup) now complete successfully on any MySQL 5.7+ or MariaDB 10.x server, regardless ofsql_mode. - Anyone who started a failed install: Drop the partially created database, remove any
.envandwritable/install.lockthat were generated, and re-run the installer.
Full Changelog: 0.31.10.0...0.31.11.0