Specification: the expcomponents packages and what the kernel uses them for
This page is the reference for each library of expcomponents, Exponential's fork of the Zeta Components (Apache License 2.0): what the package does, which kernel classes, files and features use it, which upstream package it replaces and where its repository is. The overview, the history and the reasons for the fork are on the feature page Exponential Components (expcomponents); what an upgrade means is in the upgrade notes.
The usage lists were taken from the kernel's own code (kernel/, lib/, bin/, update/, index_webdav.php) by
searching for each component's class prefix, for example grep -rlE '\bezcMail' --include=*.php kernel lib. Repeat
that search to check a list against your release. Extensions are named where a shipped extension depends on a
component.
Contents
- Common rules for every package
- Summary table
- base
- archive
- authentication
- cache
- configuration
- console-tools
- database
- debug
- event-log
- feed
- image-analysis
- image-conversion
- mvc-tools
- persistent-object
- signal-slot
- system-information
- webdav
- Forks the kernel does not require
- Upstream packages that are not forked
Common rules for every package
| Property | Value for every fork |
|---|---|
| Package name | se7enxweb/expcomponents-<name>, where <name> is the upstream package name without zetacomponents/ |
| Repository | https://github.com/se7enxweb/expcomponents-<name>, a GitHub fork of https://github.com/zetacomponents/<Name> |
replace | "zetacomponents/<name>": "self.version" (webdav also se7enxweb/zetacomponents-webdav) |
| License | Apache-2.0; LICENSE.txt with the upstream notice lines, a NOTICE file with the upstream notices and the fork's name, CREDITS, ChangeLog |
| Class prefix | ezc<Component>, unchanged |
| Autoload | "classmap": ["src"] in the package's composer.json, loaded by vendor/autoload.php |
| Installed at | vendor/se7enxweb/expcomponents-<name>/ |
| Tags | Without a v prefix (1.5.2); permanent once pushed |
| Kernel constraint | Tilde form (~1.5.3), caret for base and console-tools (^1.9.6, ^1.7.6), in the kernel's composer.json require |
| Tests | tests/ with phpunit.xml.dist; development dependencies zetacomponents/unit-test and PHPUnit |
Version state: every fork named on this page was released on 2026-11-06 (a tag, a GitHub release and the version on
Packagist); archive 1.5.2 and webdav 1.2.2 were released a few days before. Each fork requires the others by their
fork names (se7enxweb/expcomponents-base ~1.8, not zetacomponents/base).
Summary table
| Component | Fork package | Replaces | Kernel needs it for | Fork release (kernel constraint) |
|---|---|---|---|---|
| base | se7enxweb/expcomponents-base | zetacomponents/base | every component; the autoload generator's file walk; exceptions and options of the REST layer | 1.9.6 (^1.9.6) |
| archive | se7enxweb/expcomponents-archive | zetacomponents/archive | package import, export and upload (.ezpkg, tar and zip) | 1.5.3 (~1.5.3); 1.5.2 on 2026-11-03 |
| authentication | se7enxweb/expcomponents-authentication | zetacomponents/authentication | REST authentication filters: basic, API key, OAuth | 1.4.2 (~1.4.2) |
| cache | se7enxweb/expcomponents-cache | zetacomponents/cache | REST response and route caching | 1.6.4 (~1.6.4) |
| configuration | se7enxweb/expcomponents-configuration | zetacomponents/configuration | SQLI Import 2.0.x (one exception class) | 1.4.1 (~1.4.1) |
| console-tools | se7enxweb/expcomponents-console-tools | zetacomponents/console-tools | ezpgenerateautoloads.php, the help examples generator, an update script | 1.7.6 (^1.7.6) |
| database | se7enxweb/expcomponents-database | zetacomponents/database | the REST layer's database handle; the OAuth client list | 1.5.5 (~1.5.5) |
| debug | se7enxweb/expcomponents-debug | zetacomponents/debug | the REST debug output | 1.3.1 (~1.3.1) |
| event-log | se7enxweb/expcomponents-event-log | zetacomponents/event-log | log levels of the REST router and controller | 1.5.1 (~1.5.1) |
| feed | se7enxweb/expcomponents-feed | zetacomponents/feed | RSS 1.0, RSS 2.0 and Atom exports; REST feed views | 1.4.7 (~1.4.7) |
| image-analysis | se7enxweb/expcomponents-image-analysis | zetacomponents/image-analysis | required by image-conversion; the ezie image editor | 1.2.1 (through image-conversion) |
| image-conversion | se7enxweb/expcomponents-image-conversion | zetacomponents/image-conversion | the ezie image editor | 1.5.2 (~1.5.2) |
se7enxweb/expcomponents-mail | zetacomponents/mail | every mail: eZMail, SMTP and sendmail transports, the mail gate, bounces | 1.10.2 (~1.10.2) | |
| mvc-tools | se7enxweb/expcomponents-mvc-tools | zetacomponents/mvc-tools | the REST API and the REST endpoints of GraphQL, help and migrations | 1.2.5 (~1.2.5) |
| persistent-object | se7enxweb/expcomponents-persistent-object | zetacomponents/persistent-object | OAuth clients, tokens and authorization codes | 1.8.3 (~1.8.3) |
| signal-slot | se7enxweb/expcomponents-signal-slot | zetacomponents/signal-slot | the hooks of the content publishing queue | 1.2.1 (~1.2.1) |
| system-information | se7enxweb/expcomponents-system-information | zetacomponents/system-information | Setup > System information | 1.1.3 (~1.1.3) |
| webdav | se7enxweb/expcomponents-webdav | zetacomponents/webdav, se7enxweb/zetacomponents-webdav | the WebDAV server (index_webdav.php) | 1.2.3 (~1.2.3); 1.2.2 on 2026-11-01 |
base
- Purpose: the infrastructure every component relies on: the base exception classes (
ezcBaseException,ezcBaseValueException,ezcBasePropertyNotFoundException,ezcBaseFileNotFoundException...), the options base classezcBaseOptions, the struct base class,ezcBaseFile(recursive directory walks, relative paths) and the original autoloaderezcBase::autoload. - Kernel use:
kernel/private/classes/ezautoloadgenerator.php, the engine ofphp bin/php/ezpgenerateautoloads.php, walks the directories withezcBaseFile::findRecursive()andwalkRecursive()and computes paths withcalculateRelativePath();lib/ezutils/classes/ezsys.phpthrowsezcBasePropertyNotFoundExceptionfor unknown properties;- option and struct classes in
kernel/private/options/andkernel/private/structs/, the public API's content classes (kernel/private/api/content/), the cluster exceptions (kernel/private/classes/exceptions/cluster/), the DFS MySQLi backend, the OAuth modules and the REST layer (kernel/private/rest/classes/). - The setup wizard's check
setup.ini [ezcversion](TestClass=ezcBaseFile,TestFunction=walkrecursive) tests that the library is installed.
- Autoload note:
autoload.phpregistersezcBase::autoloadonly whenEZCBASE_ENABLEDis defined astrue; with Composer it is not needed and not registered. - Fork:
se7enxweb/expcomponents-base, repository, replaceszetacomponents/base. Every other fork requires it by this name (se7enxweb/expcomponents-base ~1.8).
archive
- Purpose: create, change and extract tar archives (ustar, v7, pax, GNU) and zip archives.
- Kernel use:
kernel/classes/ezpackage.php: export writes.ezpkgfiles withezcArchive::open( ..., ezcArchive::TAR_USTAR )orezcArchive::ZIP; import extracts them;kernel/classes/exppackagearchive.phpandkernel/classes/exppackagearchivemodes.php: reading package archives and the file modes of their entries;kernel/classes/ezpackageuploadinspector.php: inspects an uploaded package before import;kernel/classes/exppackagejson.php: the JSON package format reads the same archives.
- Features: Setup > Packages (import, export, upload),
ezpmon the command line, site package installation. - Fork:
se7enxweb/expcomponents-archive, repository, replaceszetacomponents/archive. Required by the kernel since 2026-11-03 (~1.5.2,~1.5.3since 2026-11-06). Release 1.5.2 (from upstream 1.5.1): no deprecations on PHP 8.4 and 8.5, GNU tar entries with long names or long links extracted again, tests on PHP 7.4 to 8.5.
authentication
- Purpose: identify and authenticate users with filters for different credentials and providers.
- Kernel use: the REST layer's authentication:
kernel/private/rest/classes/auth/(the authentication style base, the native user filter, the password filter, the API key filter andapikey_rest.php), the styles inkernel/private/rest/classes/auth/styles/(basic_auth.php,no_auth.php,oauth.php) andkernel/private/rest/classes/oauth/oauth_filter.php. Classes used:ezcAuthentication,ezcAuthenticationFilter,ezcAuthenticationIdCredentials,ezcAuthenticationPasswordCredentials. - Features: REST API v1 and v2 sign-in, API keys, OAuth.
- Fork:
se7enxweb/expcomponents-authentication, repository, replaceszetacomponents/authentication.
cache
- Purpose: a cache manager with several storage back ends (files, memory, APC and others).
- Kernel use: the REST layer's cache:
kernel/private/rest/classes/cache/(object.php,storage.php,apc.php,cluster.phpwith its options and exception, a cluster-aware storage of Exponential's own), the router (kernel/private/rest/classes/router.php) and the REST controller. Classes used:ezcCacheManager,ezcCacheStorage,ezcCacheStorageFile,ezcCacheStorageMemory,ezcCacheStorageOptions,ezcCacheInvalidDataException. - Features: cached REST routes and responses.
- Fork:
se7enxweb/expcomponents-cache, repository, replaceszetacomponents/cache.
configuration
- Purpose: read configuration files in several formats (INI and array based).
- Kernel use: none; the kernel has its own INI system (
eZINI). The package stays required because 7x SQLI Import 2.0.x throws one of its exception classes (behaviour changes of October 2026). - Fork:
se7enxweb/expcomponents-configuration, repository, replaceszetacomponents/configuration. The repository is new with the official fork; first fork release on 2026-11-06.
console-tools
- Purpose: command line input (options and arguments), output with formats, progress bars, status bars and tables.
- Kernel use:
kernel/private/classes/commands/ezpgenerateautoloads.phpandkernel/private/classes/ezpautoloadclioutput.php: the options and progress output ofphp bin/php/ezpgenerateautoloads.php(ezcConsoleInput,ezcConsoleOption,ezcConsoleOutput,ezcConsoleProgressbar,ezcConsoleStatusbar);kernel/classes/help/exphelpexamplesgenerator.php: the help examples generator;update/common/scripts/4.2/fixorphanimages.php: an update script.
- Features: class map generation (also run by
./console exp:velocity deployand Composer's post-install hooks). - Fork:
se7enxweb/expcomponents-console-tools, repository, replaceszetacomponents/console-tools. The repository is new with the official fork; first fork release on 2026-11-06.
database
- Purpose: a database layer on PDO with a query abstraction that hides differences between SQL dialects.
- Kernel use:
kernel/private/rest/classes/lazy.phpcreates the REST layer's database handle withezcDbFactoryandezcDbInstance(includingezcDbHandlerSqlite);kernel/private/modules/oauthadmin/list.phplists OAuth clients withezcQuerySelect. The kernel's own database layer (eZDB) does not use it. - Features: REST and OAuth storage; persistent-object needs it.
- Fork:
se7enxweb/expcomponents-database, repository, replaceszetacomponents/database.
debug
- Purpose: timers and structured debug output in several formats.
- Kernel use:
kernel/private/rest/classes/debug/debug.phpandkernel/private/rest/classes/debug/formatters/php_formatter.php: the REST layer's debug output (ezcDebug,ezcDebugStructure,ezcDebugOutputFormatter,ezcDebugStacktraceIterator,ezcDebugTimerStruct). The page debug output of the kernel (eZDebug, the Exp Debug bar) does not use it. - Fork:
se7enxweb/expcomponents-debug, repository, replaceszetacomponents/debug. The repository is new with the official fork; first fork release on 2026-11-06.
event-log
- Purpose: log events to files or other stores, with severities (
ezcLog::ERROR...). - Kernel use:
kernel/private/rest/classes/router.phpandkernel/private/rest/classes/controllers/rest_controller.phplog REST errors with theezcLogseverities through the REST debug class. The kernel's own logs (eZLog,var/log/) do not use it. - Fork:
se7enxweb/expcomponents-event-log, repository, replaceszetacomponents/event-log. The repository is new with the official fork; first fork release on 2026-11-06.
feed
- Purpose: parse and write RSS 1.0, RSS 2.0 and Atom feeds with their modules (Dublin Core, content, iTunes ...).
- Kernel use:
kernel/classes/ezrssexport.php:rssXmlContent()writes RSS 1.0, RSS 2.0 and Atom exports throughgenerateFeed(), which builds anezcFeed; Apple Podcasts and OPML are written by the kernel's own code;kernel/private/rest/classes/views/feed_decorator.php: feed views of the REST layer (ezcFeedEntryElement).
- Features: RSS exports at
/rss/feed/<address>(RSS, Atom and OPML feeds). - Fork:
se7enxweb/expcomponents-feed, repository, replaceszetacomponents/feed. The repository is new with the official fork; first fork release on 2026-11-06.
image-analysis
- Purpose: find the MIME type and properties (size, EXIF for JPEG and TIFF) of an image file.
- Kernel use: none directly.
image-conversionrequires it, and the image editor extension ezie uses it (extension/ezie/classes/image_analyzer.php). - Fork:
se7enxweb/expcomponents-image-analysis, repository, replaceszetacomponents/image-analysis. Installed as a dependency of the image-conversion fork, not listed in the kernel'srequire.
image-conversion
- Purpose: apply filters to images (scale, crop, colors, effects) through GD or ImageMagick.
- Kernel use: none in
kernel/orlib/; the kernel requires it for ezie, the image editor of the edit form, which does not declare it itself (extension/ezie/classes/image_converter.php,image_pre_action.php,image_tool_resize.php) (ezie). The kernel's image aliases use its owneZImageManagerhandlers, not this library. - Fork:
se7enxweb/expcomponents-image-conversion, repository, replaceszetacomponents/image-conversion. Release 1.5.2 includes upstream's change to run ImageMagick through the argument-list form ofproc_open()(no shell parses the command) and fixes what that change broke: scaling and cropping with ImageMagick failed with "unrecognized option `-resize '" because the filters passed option names with a trailing blank. The fix is offered upstream as zetacomponents/ImageConversion pull request #9. The release also shows the command in the error message of a failed ImageMagick call, fails at once when the target directory cannot be written, refuses a JPEG that libjpeg reports an error for with every GD build, and prints no deprecations on PHP 8.5.
- Purpose: compose, parse and send e-mail: MIME parts, attachments, HTML mail, SMTP (with STARTTLS and authentication), sendmail, IMAP, POP3 and mbox.
- Kernel use:
lib/ezutils/classes/ezmail.php:eZMailbuilds every message onezcMail,ezcMailAddress,ezcMailTextandezcMailPart;lib/ezutils/classes/ezsmtptransport.php:eZSMTPTransportsends throughezcMailSmtpTransportwithezcMailSmtpTransportOptions; in that librarytlsmeans STARTTLS;lib/ezutils/classes/ezsendmailtransport.php: the sendmail transport;kernel/private/classes/ezpmail.php,kernel/classes/mail/expmailtemplatebody.php(bodies from templates);kernel/classes/mailpreferences/expmailgate.php(the mail gate) andexpmailbouncereader.php(bounces, read from a mailbox withezcMailImapTransportorezcMailPop3TransportandezcMailTools).
- Features: every mail of the site: notifications, registration, password, forms, newsletters through
cjw_newsletter (which extends
ezcMailinCjwNewsletterMailComposer), the mail preferences and their gate. - Fork:
se7enxweb/expcomponents-mail, repository, replaceszetacomponents/mail. The repository is new with the official fork; first fork release on 2026-11-06. Release 1.10.2 includes upstream's changes after 1.10.1, among them protection against header injection: an address with whitespace or one of< > , ; "is refused before any header is written, header values, names and addresses can no longer add headers, empty header names and blank continuation lines are refused,ezcMailTools::validateEmailAddress()no longer accepts a trailing newline, and Content-IDs are random.ezpMailMessageIdTest(MI-04, MI-05) checks the kernel against it.
mvc-tools
- Purpose: request parsing, routing, dispatching, views and response writing for an MVC application.
- Kernel use: the whole REST layer in
kernel/private/rest/classes/(router, routes, request parser, controllers, status objects, views, response writer, the authentication styles' interfaces), and the REST endpoints built on it: GraphQL (kernel/classes/graphql/rest/), help content (kernel/classes/help/content/rest/) and migrations (kernel/classes/migration/rest/). Classes used most:ezcMvcRequest,ezcMvcResult,ezcMvcRoutingInformation,ezcMvcInternalRedirect,ezcMvcController,ezcMvcResponseWriter,ezcMvcHttpResponseWriter. - Features: REST API v1 and v2 with the ezprestapi extension.
- Fork:
se7enxweb/expcomponents-mvc-tools, repository, replaceszetacomponents/mvc-tools. The repository is new with the official fork; first fork release on 2026-11-06.
persistent-object
- Purpose: map PHP objects to database tables and fetch, store and delete them (on the database component).
- Kernel use: the OAuth server:
kernel/private/oauth/classes/(restclient.php,restauthorizedclient.phpand the persistent object definitions inpersistentobjects/), the REST tokens and authorization codes (kernel/private/rest/classes/models/,po_maps/,oauth/utility.php), and the OAuth modules (kernel/private/modules/oauth/authorize.php,kernel/private/modules/oauthadmin/). Classes used:ezcPersistentObjectDefinition,ezcPersistentObjectProperty,ezcPersistentObjectIdProperty. The kernel's owneZPersistentObjectis a different class and does not use it. - Fork:
se7enxweb/expcomponents-persistent-object, repository, replaceszetacomponents/persistent-object.
signal-slot
- Purpose: signals and slots: objects emit named signals, connected callbacks run.
- Kernel use:
kernel/private/classes/ezpcontentpublishingqueue.php:ezpContentPublishingQueuekeeps anezcSignalCollection, connects the hooks configured for the asynchronous publishing queue and emitspreQueuebefore a version is queued. - Fork:
se7enxweb/expcomponents-signal-slot, repository, replaceszetacomponents/signal-slot. The repository is new with the official fork; first fork release on 2026-11-06.
system-information
- Purpose: read system values: CPU type and speed, memory, the operating system, the PHP accelerator.
- Kernel use:
kernel/private/classes/views/setup/info.php: Setup > System information (/setup/info) readsezcSystemInfo::getInstance(); when the operating system cannot be read (ezcSystemInfoReaderCantScanOSException) the page shows no system values and a debug notice is written. - Fork:
se7enxweb/expcomponents-system-information, repository, replaceszetacomponents/system-information. The repository is new with the official fork; first fork release on 2026-11-06.
webdav
- Purpose: a WebDAV server (RFC 2518 and RFC 4918) with pluggable back ends, locking and authentication.
- Kernel use:
index_webdav.phpat the installation root runsezcWebdavServerwith the content back endkernel/private/classes/webdav/ezwebdavcontentbackend.php(eZWebDAVContentBackend extends ezcWebdavSimpleBackend implements ezcWebdavLockBackend), its authenticationezwebdavcontentbackendauth.phpand the path factoryexpwebdavpathfactory.php. - Features: editing content as files over WebDAV (WebDAV and SOAP).
- Fork:
se7enxweb/expcomponents-webdav, repository, replaceszetacomponents/webdavandse7enxweb/zetacomponents-webdav. Required by the kernel since 1.2.2 (~1.2.2,~1.2.3since 2026-11-06). Release 1.2.1 was published asse7enxweb/zetacomponents-webdav(WebDAV on PHP 8); release 1.2.2, the first under the new name, keeps request paths and the destination of COPY and MOVE inside the back end's root, does not follow symbolic links out of it, refuses request bodies with a document type declaration, compares digest authentication in constant time and creates random lock tokens.
Forks the kernel does not require
| Fork | Replaces | Note |
|---|---|---|
se7enxweb/expcomponents-authentication-database-tiein (repository) | zetacomponents/authentication-database-tiein | Not required since October 2026; nothing in the kernel or its required packages uses ezcAuthenticationDatabase*. Release 1.2.1 (2026-11-06). |
se7enxweb/expcomponents-graph (repository) | zetacomponents/graph | Charts; not used by the kernel or a shipped extension. Release 1.7.3 (2026-11-06). |
se7enxweb/expcomponents-workflow (repository) | zetacomponents/workflow | A workflow engine; the kernel has its own (eZWorkflow). Release 1.5.2 (2026-11-06). |
An extension that needs one of them requires the fork by its name.
Upstream packages that are not forked
| Package | Why |
|---|---|
zetacomponents/mvc-authentication-tiein | Not required since October 2026; nothing uses it. |
zetacomponents/php-generator | Was a development requirement; removed in October 2026. |
zetacomponents/unit-test, zetacomponents/database-schema, zetacomponents/coding-standard | Development dependencies of the forks' own test suites; not installed on a site. |