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-07T08:18:29Z
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.
2026-06-07T07:42:10Z
Updated: Updated file listing md5 hashes for the 6.0.14 release upgrade check. Release prep.
2026-06-07T07:41:45Z
Updated: Added Database name text field to auth against a specific database (not just admin db based auth).
2026-06-07T07:40:42Z
Updated: Added missed settings to load mongo db schema handler. Bugfix.
2026-06-06T06:37:10Z
Updated: Updated file listing md5 hashes for the 6.0.14 release upgrade check. Release prep.

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