icom/ framework

Ready for the next PHP.

Check the actual runtime, catch deprecations early, and upgrade with a verified rollback path.

Stable support and experimental builds

Version 0.6 supports the PHP 8.4 and 8.5 stable series, with a minimum of 8.4.1. Composer accepts later 8.x minors below 9.0, but a version range is not a compatibility guarantee. PHP 8.6 is experimental; other future minors require assessment. Production preflight rejects experimental and unassessed series. Use a maintained patch from PHP and your hosting vendor.

Check before upgrading

Run the actual target binary. This CLI-only preflight works before vendor is installed, reads no .env secrets and opens no database connection. Select your PDO driver and add --oidc when using the optional curl transport. A successful capability check still needs dependency, application and web-runtime tests.

example
/path/to/php bin/compatibility.php --production --pdo=sqlite
# Or: --pdo=mysql --oidc
/path/to/php /path/to/composer.phar check-platform-reqs
/path/to/php bin/verify.php

A stable dependency baseline

Composer resolves dependencies at PHP 8.4.1 even on newer runtimes. Updates cannot silently raise the minimum just because a developer upgraded PHP. Actual platform checks remain mandatory. Review a fresh dependency solve in a disposable copy, test it, then deploy its reviewed lock. Never use --ignore-platform-reqs to force an incompatible installation.

Deprecations fail verification

composer verify lints first-party PHP and runs the suite using the selected binary. Compiler diagnostics fail even when lint exits zero. The test-only E_ALL collector also fails on unsuppressed runtime warnings, notices and deprecations, including those reached inside application error middleware. Reports omit messages and arguments. Production error handling remains separate; suppressed or unexecuted paths still need review.

Future versions in CI

Required stable jobs cover PHP 8.4/8.5, locked and freshly resolved dependencies, real MariaDB/Redis, and a core production install. Candidate jobs cover latest stable, 8.6 and nightly, with visible allowed failures. Weekly/manual triggers retain logs and never deploy or promote PHP automatically. The workflow is included in the source; GitHub execution must be activated by placing this project at a repository root. No provider run is claimed.

Keep existing state usable

Before changing PHP, test passwords, encryption, MFA, cache and queued jobs across the upgrade and rollback. The source includes a synthetic private SQLite fixture. Its reader consumes one-use state; use a fresh directory for each direction and remove it afterward. Preserve APP_KEY and never use production credentials in this fixture.

example
upgrade_dir=$(mktemp -d /tmp/icom-upgrade-84-to-85-XXXXXX)
/path/to/php84 tests/runtime/upgrade-state.php write "$upgrade_dir"
/path/to/php85 tests/runtime/upgrade-state.php read "$upgrade_dir"
rm -r -- "$upgrade_dir"
# Repeat with a fresh directory and the PHP versions reversed.

Promote only after evidence

Review official migration notes, dependencies and native extension compatibility. Test the complete suite, state transfer, HTTP/auth flows and the actual FPM or worker runtime in staging. Rebuild Swoole/native extensions for the selected PHP ABI. Keep the previous runtime, code and consistent backup available. Update the support policy only after a stable build passes those gates. Version 0.6 itself changes no production PHP handler, cron or schema.

What the current checks establish

The current verification report records tests on PHP 8.4.23, 8.5.4, 8.5.8 and an isolated source-built 8.6.0beta2. A deprecated PDO SQLite test API was replaced with the driver subclass API. Composer 2.10.0 itself still emits an 8.6 spl_object_hash deprecation, so 8.6 remains experimental. The live site stays on PHP-FPM 8.4.23. Future PHP releases, container builds and new worker rollouts require further verification.

Current verification ↗

PHP supported versions ↗

Composer platform checks ↗

ການຮອງຮັບ PHP ໃນອະນາຄົດ

ມີລະບົບກວດຄວາມເຂົ້າກັນໄດ້ ແລະທົດສອບລຸ້ນໃໝ່ກ່ອນນຳໃຊ້. PHP 8.6 beta ໃຊ້ສຳລັບທົດສອບແຍກຕ່າງຫາກ; ເວັບຈິງຍັງໃຊ້ PHP stable. ບໍ່ສາມາດຮັບປະກັນ PHP ທຸກລຸ້ນທີ່ຍັງບໍ່ອອກໄດ້ ແຕ່ມີຂັ້ນຕອນກວດ, ແກ້ໄຂ ແລະຍ້ອນກັບເມື່ອອັບເກຣດ.

Developer preview — benchmark claims require reproducible evidence.

Explore the architecture