Release news ยท 20 September 2026
PHP Ledger 1.1.1: setup you can watch
Browser setup now runs in six stages you can follow, tells you what it proved on your own server, and treats a missing requirement as something to fix rather than an error page.
This is a patch release with no change to any accounting behaviour. Correction, 20 September 2026 (in 1.1.2): at publication this article said there was no schema change and no migration. That was wrong: the package carries migration 034_inventory_locations and the optional Stock locations module, which is off by default and changes nothing until a company enables it. A fresh 1.1.1 installation applied the migration during setup. An installation upgraded from 1.1.0 by replacing files has it pending and must run php www/phpledger/install/migrate.php once, or install 1.1.2 from /maintenance.php, which applies it.
What changed in setup?
- Six stages. Start, Database, Build, Checks, Account and Ready, each sized for a laptop screen. The Build stage shows a progress bar naming the step it is on, such as “Building the chart of accounts and journals, step 6 of 35”, instead of a button that looks like it is waiting for you.
- A failed requirement is something to clear. A missing PHP extension takes over the screen with the places it is actually fixed: the
php.iniline on XAMPP or Laragon, the package name on Debian, the PHP Selector screen on shared hosting, and a Check again button. - Setup proves what it built. Fourteen checks on your server before you type anything, and six against the finished database afterwards, including the count of protective database rules that keep posted entries immutable. The last screen itemises what exists, read back from the database.
- The schema applies in six requests instead of 35. The chain is about two seconds of work. A host with a short execution limit still hands control back between steps and resumes from its receipts.
A database on your own computer needs no preparation
On localhost, 127.0.0.1 or ::1, setup accepts the account XAMPP, Laragon and MAMP install, including root with no password, and creates the database itself when it does not exist. Setup also reports the folders it will use and the address it will record, and finds a database server answering on a loopback port to fill in the port.
A database on another server still needs a dedicated account with a password, and is never created. Those credentials cross the network, and holding them is no proof of controlling the website.
Plain HTTP warns instead of refusing
A site without a certificate can now be installed and used. Setup warns on every step, and the installed copy repeats the warning on every screen, naming what stays unavailable: Connections, which cover the API, MCP and app integrations, still require an HTTPS address. Sign-in details and accounting data travel unencrypted until a certificate is in place, so turn on SSL in your hosting panel before keeping real books.
A server that would refuse the schema says so first
MySQL 8 writes a binary log by default and refuses CREATE TRIGGER unless the account is trusted to create one, which used to stop the schema part-way through the first migration. Setup now reads that setting at the connection check and names log_bin_trust_function_creators = 1 before anything is written. A migration interrupted anyway records how far it got and resumes at its first unapplied statement.
What is the assurance status?
Automated suites pass on MySQL 8.4 and MariaDB 10.11: 316 tests with no failures, alongside two end-to-end browser installation fixtures. The package was built twice from the same commit and was byte-identical both times. These are technical checks, not accounting or usability sign-off. Independent accounting review, independent security review, supervised pilots including a real month-end close, and installation observation by an unfamiliar operator remain outstanding, as recorded for 1.0.0.
Minor and patch releases ship without a media kit, by the owner's decision of 20 September 2026.
Upgrading
From 1.1.0 this replaces files and then needs one run of php www/phpledger/install/migrate.php, for migration 034 (corrected 20 September 2026; the original text said there was no migration). Follow the packaged UPGRADE.md, keep a backup and rehearse a matched code and database restore first. The download page carries the archive and its checksum, and the versioned GitHub release holds its verification record.
