Welcome to eZpedia!

The free eZ Publish encyclopedia that anyone can edit. eZpedia has accumulated 722  english articles since 2006. We encourage you to create an account and create or edit a page yourself. Some folks create an article in the people namespace with their full name as the article name with a brief description of who they are, their interests, goals and objectives.

Ask A Question

Do you have an eZ Publish question, do you need an eZ Publish answer? Simply login and ask your question in our discussion forum. We publicly write free documentation based on your submissions. Posting on eZpedia is a great way to get answers you need and contribute to our freely available community documentation for eZ Publish.

Chat with other eZ Publish Developers LIVE from around the World!

Ecosystem

Read about what is going on within the various eZ Publish related websites on internet.

Recent development activity

Track the development progress through the roadmap by reviewing recent Exponential Git activity from the github repository.

github.com/ezsystems/ezpublish-legacy commit log rss feed
Last updated: 2026-06-12T16:12:58Z
2026-06-12T16:12:58Z
Updated: share/filelist.md5 regenerated for 6.0.15 release preparation

Refreshes the MD5 integrity manifest ahead of the 6.0.15 release tag (due
approx. one month from now). verifyfiles.sh uses this file to detect
unauthorised or accidental modifications to the distributed codebase.

Changes reflected in this regeneration (55 updated / added entries,
50 removed/replaced checksums, net +5 new files):

- bin/modfix.sh                  updated checksum (@description tag added)
- bin/php/console                new file (Symfony-style command dispatcher)
- bin/php/preload.php            new file (site cache warmer)
- bin/php/clusterize.php         updated checksum (@description tag added)
- bin/php/convertprice2multiprice.php  updated (@description tag added)
- bin/php/ezconvertdbcharset.php updated (@description tag added)
- bin/php/ezflowupgrade.php      updated (@description tag added)
- bin/php/ezgeneratetranslationcache.php  updated (@description tag added)
- bin/php/ezpgenerateautoloads.php  updated (@description tag added)
- bin/php/ezsubtreecopy.php      updated (@description tag added)
- bin/php/ezsubtreeremove.php    updated (@description tag added)
- bin/php/ezwebincommon.php      updated (@description tag added)
- bin/php/ezwebininstall.php     updated (@description tag added)
- bin/php/ezwebinupgrade.php     updated (@description tag added)
- bin/shell/*.sh (30 files)      updated checksums (@description tags added)
- design/admin/templates/toolbar/full/admin_bookmarks.tpl  updated (URL alias fallback fix)
- doc/bc/6.0/console.md          new file (end-user documentation)
- doc/bc/6.0/preload.md          new file (end-user documentation)
- lib/version.php                updated (6.0.14 → 6.0.15)
- share/db_data.dba              updated (seed version string 6.0.15stable)
2026-06-12T16:10:36Z
Updated: Exponential CMS version bump 6.0.14 → 6.0.15 stable release

lib/version.php: VERSION_RELEASE incremented from 14 to 15, marking the
6.0.15 stable release — affects all version strings returned by
eZPublishSDK::version(), ::release(), and displayed in the admin interface
and API responses.

share/db_data.dba: seed data version string updated from '6.0.14stable' to
'6.0.15stable' so eZPublishSDK::databaseVersion() reports the correct
release on fresh installations seeded from this file.

Added: bin/php/console — Symfony-style command dispatcher that auto-discovers
and runs all bin/php, bin/shell, bin/*, and extension/*/bin scripts with zero
configuration. Features orange ANSI color theme, TTY color pass-through via
proc_open so sub-script output (including preload colors) is preserved, fuzzy
did-you-mean suggestions, --help forwarding, and bare-name shortcuts.

Added: bin/php/preload.php — site cache warmer that warms section pages via
curl then spiders the full site via wget (recursive, depth 3). Produces rich
colorised terminal output with per-page HTTP status badges, wall-time speed
tiers, kernel timing metrics, and a final summary of pages cached, auth-skipped
resources, and broken links.

Updated: @description and @long-description tags added to all 47 bin/php and
bin/shell scripts — console list now shows a meaningful one-line description
for every command instead of '(no description)'. Tags are auto-detected by
the console extractor with no registration step required.

Updated: design/admin/templates/toolbar/full/admin_bookmarks.tpl — admin
bookmarks toolbar now falls back to /content/view/full/<node_id> when a
bookmarked node has no URL alias, preventing broken href='' links appearing
in the admin bookmarks menu for nodes that have not yet been assigned a
URL alias.

Added: doc/bc/6.0/console.md — end-user documentation for bin/php/console
covering all namespaces, copy-paste example commands, help routing, extension
command discovery, adding descriptions to custom scripts, and troubleshooting.

Added: doc/bc/6.0/preload.md — end-user documentation for bin/php/preload.php
covering prerequisites, siteaccess usage, output interpretation, speed tiers,
cron job setup, post-cache-clear workflow, and troubleshooting.
2026-06-07T12:18:59Z
Updated: Updated file listing md5 hashes for the 6.0.14 release upgrade check. Release prep.
2026-06-07T12:09:19Z
fix: PostgreSQL compatibility for setup wizard re-run on existing database

Three issues prevented the setup wizard from completing when database
objects already existed from a prior run:

1. lib/ezdbschema/classes/ezpgsqlschema.php
   - CREATE SEQUENCE -> CREATE SEQUENCE IF NOT EXISTS
   - CREATE TABLE -> CREATE TABLE IF NOT EXISTS
   Prevents errors when sequences/tables already exist in the DB.

2. lib/ezdbschema/classes/ezdbschemainterface.php (insertSchema)
   - Fetch existing tables list once before schema+data loops
   - Skip both schema creation and data insertion for tables that
     already exist, preventing duplicate key errors on retry.

3. lib/ezdb/classes/ezpostgresqldb.php (correctSequenceValues)
   - Replace deprecated pg_attrdef.adsrc column (removed in PG12)
     with pg_get_expr(pg_attrdef.adbin, pg_attrdef.adrelid)
   - Fixes E_WARNING and foreach-on-false crash after schema install.
2026-06-07T08:18:29Z
Updated: Updated file listing md5 hashes for the 6.0.14 release upgrade check. Release prep.
2026-06-07T08:18:06Z
Updated: Updated file listing md5 hashes for the 6.0.14 release upgrade check. Release prep.
2026-06-07T08:16:29Z
setup: allow rootless shared-hosting MySQL installation and fix MongoDB-only code leaking into SQL paths

kernel/setup/steps/ezstep_installer.php
--------------------------------------
Previously, checkDatabaseRequirements() left $dbParameters['database']
empty/false for MySQL when the user had not yet chosen a database name,
causing eZDB::instance() to fall back to the site.ini default (or to
whatever the ini chain resolved to).  The mysqli constructor then called
mysqli_select_db() against that default database, which on shared hosting
is typically a system database the application user has no access to.

Fix: when the database type is mysql/mysqli and a 'dbname' value was
explicitly submitted via the setup form, copy it into $dbParameters['database']
before the connection is attempted.  This means the driver connects
directly to the target application database from the very first query,
requiring only the privileges needed to operate that single database
(SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER) — no global
or system-level grants are needed.

kernel/setup/steps/ezstep_site_details.php
------------------------------------------
The Site Details init() path hardcoded $dbName = 'mysql' for the mysqli
driver.  This is a legacy pattern from the era when MySQL required
connecting to the 'mysql' system database first to enumerate available
databases via SHOW DATABASES — a privilege restricted to root or DBA
accounts.  On shared hosting the application database user does not have
this privilege, producing an immediate 'Access denied ... to database
mysql' fatal error that prevented any progress past this step.

Two-part fix:
1. When the user has provided an explicit database name ('dbname'), connect
   directly to that database instead of to 'mysql'.  This avoids both the
   'Access denied' error and any requirement for SHOW DATABASES.
2. After a successful connection, when 'dbname' is non-empty for MySQL,
   skip availableDatabases() entirely and pre-populate the dropdown with
   just the named database.  The 'Database' select on the Site Details page
   will therefore show exactly the database the user typed, and the wizard
   can proceed without any elevated privilege.

Together these two changes mean a shared-hosting MySQL user only needs
standard per-database privileges.  No root, no SUPER, no SHOW DATABASES.

kernel/classes/ezurlaliasml.php
--------------------------------
The OMS URL-alias history/reparenting fix inside storePath() was added to
support MongoDB's document model but was not guarded by a database-type
check.  As a result, every call to storePath() on a MySQL or PostgreSQL
installation reached $db->aggregate() and $db->mongoUpdateMany() —
methods that exist only on expMongoDB — and crashed immediately with
'Call to undefined method eZMySQLiDB::aggregate()'.  This made the final
'Creating sites' step of the setup wizard fatal for all SQL backends.

Fix: wrap the entire MongoDB-specific block (aggregate + mongoUpdateMany
history marking, link relinking, and child reparenting) in an
if ( $db->databaseName() === 'mongo' ) guard so it is compiled and
executed only when the active database driver is MongoDB.

A secondary aggregate() call in the link-ID lookup branch (used when
$linkID !== true) was also unconditional.  That call is now dispatched
as a plain SQL arrayQuery() for SQL backends and as aggregate() for
MongoDB, preserving correct behaviour on all drivers.

All three changes combined make a clean out-of-the-box installation on
shared MySQL hosting possible without requiring root database access,
superuser grants, or any manual pre-configuration beyond creating a
single application database and granting standard DML/DDL privileges to
the application user.

Recent discussions

Read what others are discussing

Recently updated articles

Read recently modified articles

ezpedia.org updated content rss feed
  1. eZ : Main page
  2. Solution : Read-only site
    • @5 | 2025/01/25 @ 17:17:56 : Graham Brookins : History - based on version 4, republishing in attempt to regain example settings display
  3. Solution : Reseting the admin password in eZ publish
    • @15 | 2024/10/25 @ 21:09:06 : Graham Brookins : History - based on version 14 added missing comma to example copy and paste code.
  4. Learning : Extensions
  5. Learning : Standard Events
  6. Learning : Standard Triggers
  7. Learning : A workflow
  8. Learning : Events
  9. Learning : Workflow
  10. Learning : Roles
  11. Learning : Policies
  12. Learning : User Groups
  13. Learning : Site Access
  14. Learning : Design Structure
  15. Learning : Default Design
  16. Learning : Access Control
  17. Learning : Designs
  18. Learning : Template Override System
  19. Learning : Pagelayout.tpl
  20. Learning : Custom System Templates