# CPalius CMF 1.1.1

**Released:** 2026-09-14 · **Channel:** stable · **Critical:** no

Updating to 1.1.0 from the panel was interrupted part-way on a live
installation. This release fixes the cause and leaves a way out if it ever
happens again.

Turkish: [1.1.1-tr.md](1.1.1-tr.md)

## What went wrong

The cause was not exotic: `CoreUpdater` did not lift PHP's execution time limit,
so writing several thousand files hit `max_execution_time` part-way through.

A time-limit fatal **cannot be caught**. So the rollback in the catch block
never ran, and neither did the cache clear after it. What was left behind was
some new files, some old files, and a compiled container describing neither. The
visible symptom was a 500 about a constructor signature — which tells an
operator nothing about updates at all.

## Fixes

- **`set_time_limit(0)` and `ignore_user_abort(true)`.** The first lets the job
  finish. The second is less obvious and matters just as much: many hosts put a
  60-second gateway timeout in front of PHP. The browser gets a 504, but the
  process keeps running and completes the work.

- **An interrupted update now announces itself.** A marker file is written
  *before* the first file is overwritten: which version, where the staged files
  are, where the backup is, how many files are in scope. A half-written tree is
  not something anyone can diagnose from the outside — the updater has to leave
  a note saying what it was doing.

- **A shutdown hook.** Runs even on a time-limit fatal. If the marker is still
  there, the install did not finish and the compiled container now describes a
  tree that no longer exists; clearing it keeps the site bootable enough to show
  the recovery screen.

- **Resume / Roll back.** The panel shows an interrupted update first, in a red
  card. *Resume* copies the staged files again — copying is a repeatable
  operation, and a resume that tried to guess which files had already landed
  would leave exactly the inconsistency it was called to fix. *Roll back*
  restores the files from the backup; files the release **added** are removed.

- **An interrupted update blocks starting another one.** Starting a second
  update on top would overwrite the backup, which is the only way back.

## Upgrade notes

- **From 1.1.0 this is a patch.** AACP → Updates → File patches. Six files
  change; there is no schema change.

- **If your installation is in a half-updated state**, get the site up first:
  upload the 1.1.1 package over FTP, then empty the **contents** of
  `cp-core/var/cache/prod/` (keep the directory). When the panel opens, if a
  recovery card is showing, choose *Resume*.

- Updating from the panel clears the cache for you.

## Breaking changes

None.
