Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Behaviour changes of July and August 2026 (6.0.15 development)

Read this page before you update an installation to the changes made between 1 July and 31 August 2026. It is the upgrade checklist for that period: what can break, the new settings, and the fixes you may notice…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/bc/6.0/behaviour-changes-2026-07-08.md

On this page

Behaviour changes of July and August 2026 (6.0.15 development)

Read this page before you update an installation to the changes made between 1 July and 31 August 2026. It is the upgrade checklist for that period: what can break, the new settings, and the fixes you may notice. Release 6.0.15 had no tag then; everything below is part of the 6.0.15 line. For September and October see Behaviour changes of 16 to 30 September 2026 and Behaviour changes of October 2026. The stories of the months are July and August.

Quick checklist

  1. Make sure every user account has an ezuser_setting row (how to find the ones that do not).

  2. If you use the extensions bciconextensions or bciconextensions_share_icons, remove them from ActiveExtensions[].

  3. If you have templates that rely on XHTML self-closing tags or type="text/css", read "HTML5 markup in the kernel designs".

  4. Review your override.ini files if some blocks have a Priority and others do not.

  5. Regenerate autoloads and clear all caches:

    php bin/php/ezpgenerateautoloads.php -e
    php bin/php/ezcache.php --clear-all --allow-root-user

Changes that can break something

Accounts without an ezuser_setting row cannot sign in (16 August)

What changed. At sign-in, kernel/classes/datatypes/ezuser/ezuser.php treated a user with no settings row as enabled. It now treats it as disabled. Accounts made in the admin always have the row; accounts made by SQL, packages or migrations may not.

How to check and fix. Find and repair such accounts with the queries in the security specification.

Override order follows Priority (12 July)

What changed. The template engine sorts override blocks by the key Priority of override.ini: the lowest number is checked first, and a block without Priority comes last. A block created in the template editor gets Priority=0.

Who is affected. If you mix hand-written blocks without Priority with editor blocks, the editor's blocks now win.

How to fix. Add Priority to the hand-written blocks to set the order you want.

HTML5 markup in the kernel designs (18 July)

What changed. The templates of design/standard, and the markup written by PHP in lib and kernel (the nl2br template operator, the debug and statistics output, the kernel web entry point), in ezjscore and in ezoe, now pass HTML validators: <br /> became <br>, <input ... /> became <input ...>, and <style type="text/css"> became <style>. Browsers treat both forms the same.

Who is affected. Only code that compares markup byte for byte (snapshot tests) or post-processes it as XML. Your own overrides are not changed by the kernel.

jQuery 3.7.1 in ezjscore (16 August)

Pages that load ezjsc::jquery got jQuery 3.7.1 and jQuery Migrate 3.4.1 (muted). Code that still needs jQuery 1.x behaviour usually works through Migrate. This was superseded in October by jQuery 4; see the 6.0.15 changelog and YUI removal.

Kickstart and the setup wizard

  • kickstart.ini is no longer shipped active. The example is kickstart.ini--example, the template kickstart.ini-dist. If you relied on a shipped kickstart.ini, copy the example to kickstart.ini and edit it. See Kickstarter.
  • A kickstart install always creates the siteaccesses site and admin.
  • A new installation defaults to eng-US and the Exponential content of share/db_data.dba; existing installations are not touched. See Clean install defaults.

The autoload generator

kernel/private/classes/ezautoloadgenerator.php compares real paths, and its exclusion filter (var, settings, bin, autoload, tmp, lib/ezc ...) now ends at a directory boundary: a folder called settings_backup is no longer skipped by the filter settings. The "Scan complete" log line is gone, so the generator stays as quiet as designed. If a class went missing after you renamed or symlinked extension folders, run php bin/php/ezpgenerateautoloads.php -e again.

New settings

FileBlockKeyDefaultScopeMeaning
site.ini[TemplateSettings]ShowTemplatePathCommentsdisabledglobal/siteaccessSTART/STOP comments naming each template. Feature.
site.ini[ExtensionSettings]AdditionalExtensionDirectories[]emptyglobalMore extension roots. Feature.
site.ini[SiteSettings]EzInstallationName, ProductionInstallationList[]not setglobalInstallation name filter. Feature.
ezscript.ini[eZScriptSettings]RootDelay10globalSeconds a script run as root with --allow-root-user waits so you can press Ctrl-C. 0 removes the delay.
icon.ini[ExtensionSettings]IconExtensions[]emptyglobal/siteaccessExtensions whose icons/ folder is searched. Feature.
menu.ini[Leftmenu_design]Links[template_editor]visual/templatelistglobalTemplate Editor in the Design menu.
transform.ini[search]Commands[]=lowercaseaddedglobalThe lowercase transformation in the search group.

Example: no root delay in an automated deployment.

# settings/override/ezscript.ini.append.php
[eZScriptSettings]
RootDelay=0

Fixes you may notice

  • Console output: every bin/php/console entry shows a description; ezpm is a console command (ezpm).
  • PHP 8.0 to 8.5 (PHP 7.4 usable without support): string offsets with curly braces (ISBN13 datatype, WebDAV backend); #[AllowDynamicProperties] on eZINI, eZPersistentObject and eZWorkflowProcess (PHP 8.2); nullable array type hints (generateUrl, fetchRelatedObjects); an integer cast for the next order number (PHP 8.4); the removed imagedestroy() call (PHP 8.5); guards for null values in eZSiteAccess::load, eZCharsetInfo, eZMail, the GD colour functions, eZLocale, the content cache manager, XHTML output of embedded images and URL alias caches.
  • INI files: saving in round-trip mode leaves every untouched key as it was on disk, including bare Key[] reset lines. Extension activation and package install no longer reformat unrelated settings (16 August, 0a0f4f876b). See eZINI keeps comments.
  • Debug handler honours error_reporting (3ce2a1e76c). The eng-US translation file is not looked up, which removes "missing translation" noise (e3c8d078f4).
  • Permissions SQL: an empty class or section limitation list no longer produces invalid SQL (acb8e002c5).
  • Imported Ibexa docbook: ezembed, para with a CSS class and literallayout render in XHTML; the class whitelist is enforced only for tags of the eZXML schema (5857c5baa8, d7bebcb39b).
  • Image aliases: a missing source file is a notice that names the object, the attribute, the missing alias and the existing aliases, not a fatal error (52277db85f).
  • Object not found errors name the id and the file and line of the caller (c7a5eac571).
  • SQLite: connection debug messages are readable and appear only with SQL output on; the schema generator emits INTEGER PRIMARY KEY AUTOINCREMENT and no second primary key constraint (dfba7274e8, 24c03393db, 9678728ccc).
  • MongoDB: the driver reports errors through eZDebug::writeError() with the prefix expMongoDB, not error_log (888297a0ca).
  • Package tools: see ezpm for the install lock, delayed indexing and batched commits.

Smaller changes, explained

Each of these has a commit in the ledger and a small, visible effect.

ChangeWhat you seeWhat to do
Script descriptions in the console (4ce57a7224)./console list shows one line per script. The console reads it from the 'description' key of the array given to eZScript::instance() (strategy 1 in the comment block of bin/php/console), or from an @description docblock tag.Give your own scripts a 'description' key (or // @description ...) and they appear in the list. Check: ./console list ezpm.
RootDelay (11095f902f)A script run as the operating system root user with --allow-root-user prints "With great power comes great responsibility." and waits RootDelay seconds so you can press Ctrl-C (kernel/classes/ezscript.php).0 in ezscript.ini [eZScriptSettings] removes the wait in deployments; default 10.
Layouts tab in the admin node view (8df2654e3f)The window controls of design/admin3 take an extra tab beside Ordering; design/admin/javascript/node_tabs.js marks the window controls with the class layouts-active while the tab node-tab-layouts is open. The layouts extensions supply the tab itself.Nothing; see Exponential Layouts.
Nice URL update script revert (9c4946075d)bin/php/updateniceurls.php is back to its earlier, stable version after a change made during testing proved unstable.Nothing.
Autoload generator (f46c08c18e, 62c14b36dd)Real paths are compared and the exclusion filter stops at a directory boundary; the "Scan complete" line is gone.Described above under "The autoload generator".
Media theme templates (c013093b52)Templates of the media theme guard false and missing values; the Google Tag Manager template parses.Nothing; the theme is an ordinary directory of the repository since 6 August.

Composer and extensions

The root composer.json changed as follows (suggestions are only listed in the suggest block and never installed):

DateChange
12 Julygit_manager ~2.0.1 required
19 Julysuggestions for owsimpleoperator, adminaid, the private message extension, hcaptcha, syndication
20 Julysevenx_dse ~1.0.0 and syndication ~1.2.0 required; sevenx_valkey_cache suggested
21 Julypowercontent required
30 Julythe explayouts packages (12), the expsite packages, expquery-translator and sevenx-themes-media, all ~1.0.0, declared as runtime requirements
31 Julypowercontent ~2.0.0; exppayment-stripe removed from the requirements
15 Augustexp_enhanced_link ~1.0.1 (the media theme needs it)
22 Augusteztags ~2.3.3 and cjw_newsletter ~4.0.0.0 required
31 Augustngclasslist ~1.1 required (the datatype of the ng_menu_item class)

The table is the history of July and August. The constraints have moved on since (in the composer.json of 2 October 2026, for example, git_manager ~2.0.14, eztags ~2.4.11, cjw_newsletter ~4.1.16). List the current ones with:

grep -n '"se7enxweb/' composer.json

After pulling these changes, run Composer yourself in the way you always do, then php bin/php/ezpgenerateautoloads.php -e.

README note

The README header explains that a downloaded copy of Exponential 6.0 needs composer install before it runs (04d17780ae, 84ebe2f59f).

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x