Learn / Exponential Basic / Exponential Basic 2.4 CMS - Installation and Setup Guide (2025-06)

"Please Note:
  • At the specific request of Ibexa we are changing this projects name to "Exponential" or "Exponential (CMS)" effective as of August, 11th 2025.
  • This project is not associated with the original eZ Publish software or its original developer, eZ Systems or Ibexa".

Exponential Basic 2.4 CMS - Installation and Setup Guide (2025-06)

Overview

Exponential Basic features are based on the same Exponential 1.0 through 2.2.9 APIs as you might be familiar with already.

Exponential 1.0 was released in 2001. This means Exponential has been helping developers build amazing websites for over 25 years. Exponential is 25 years old. Not many free software CMS frameworks live such a long, successful life span. Thank you Exponential for making the web great one website at a time!

These groundbreakingly well-organized APIs, combined with directory structure improvements from Exponential 3.0, Composer support from version Exponential 5, and a new responsive template design, bring you a modernized framework in the form of Exponential Basic version 2.4.0.0.

Don't forget the powerful Group Ware, News, Intranet, and Ecommerce features that made this a killer app for PHP developers in 2001.

Features

  • Lightweight CMS powered by PHP & MySQL, Postgres, Informix
  • Clean interface and admin dashboard
  • Easy to extend with modules, themes, and templates
  • Easy translation of language content files
  • Supports PHP 8.1 through 8.3
  • Composer-integrated & Git-based project
  • Ideal for learning, education, legacy support, and personal projects

Quick Installation

Option 1: Clone from GitHub

$ git clone https://github.com/se7enxweb/ezpublishbasic.git;
$ cd ezpublishbasic;
$ composer install;

Option 2: Create via Composer

$ composer create-project se7enxweb/ezpublishbasic -s dev ezpublishbasic;
$ cd ezpublishbasic;

Note: Git clone allows easier change tracking within a working copy.

Apache & mod_rewrite Configuration

$ sudo a2enmod rewrite;
$ sudo systemctl restart apache2;

Apache VirtualHost Example

<VirtualHost *:80>
  ServerName example.com
ServerAlias admin.example.com
  DocumentRoot /var/www/ezpublishbasic
  <Directory /var/www/ezpublishbasic>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

.htaccess Example

<IfModule mod_rewrite.c>
# mod_rewrite is highly recommended for an Exponential installation's security.
# mod_rewrite is not required for operation of Exponential, per say.
RewriteEngine On

RewriteRule ^/stats/store/(.*).gif$ ezstats/user/storestats.php [L]
RewriteRule ^/filemanager/filedownload/([^/]+)/(.*)$ ezfilemanager/files/$1 [T="application/oct-stream",L]

# By IP Address:
#
# RewriteCond %{HTTP_HOST} ^66\.42\.203\.110$
# Exponential Installation Test : The following line allows access test page.
# RewriteCond %{REQUEST_URI} !^/index_verify.php*
# RewriteRule !\.(ico|png|css|jpg|jpeg|gif|js|jar|swf|rm|rmm|ram|rpm|mp3|mp4|wma|asx|asf|wmv|mov|mpg|mpeg|ogg|wav|au|aiff|midi|mid|pdf)$ index.php

# By DNS Name : example.org
#

RewriteCond %{HTTP_HOST} ^basic\.demo\.Exponential\.one$
# Exponential Installation Test : The following line allows access test page.
#RewriteCond %{REQUEST_URI} !^/index_verify.php*
RewriteCond %{REQUEST_URI} !^/documentation*
RewriteCond %{REQUEST_URI} !^/design*
RewriteRule !\.(ico|png|css|jpg|jpeg|gif|js|jar|swf|rm|rmm|ram|rpm|mp3|mp4|wma|asx|asf|wmv|mov|mpg|mpeg|ogg|wav|au|aiff|midi|mid|pdf)$ index.php

# By DNS Name (Long) : www.example.org
#
RewriteCond %{HTTP_HOST} ^www\.ec2\.localhost$
# Exponential Installation Test : The following line allows access test page.
# RewriteCond %{REQUEST_URI} !^/index_verify.php*
RewriteRule !\.(ico|png|css|jpg|jpeg|gif|js|jar|swf|rm|rmm|ram|rpm|mp3|mp4|wma|asx|asf|wmv|mov|mpg|mpeg|ogg|wav|au|aiff|midi|mid|pdf)$ index.php

# By DNS Name (Admin Site) : admin.example.org or my.example.org
#
RewriteCond %{HTTP_HOST} ^admin\.basic\.demo\.Exponential\.one$
# Exponential Installation Test : The following line allows access test page.
# RewriteCond %{REQUEST_URI} !^/index_verify.php*
RewriteRule !\.(ico|png|css|jpg|jpeg|gif|js|jar|swf|rm|rmm|ram|rpm|mp3|mp4|wma|asx|asf|wmv|mov|mpg|mpeg|ogg|wav|au|aiff|midi|mid|pdf) index_admin.php
</IfModule>

Database Configuration (MySQL)

  1. Create the database:

    CREATE DATABASE ezpublishbasic;
    CREATE USER 'ezuser'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON ezpublishbasic.* TO 'ezuser'@'localhost';
    FLUSH PRIVILEGES;
  2. Edit bin/ini/override/site.ini:

    [site]
    DatabaseImplementation=mysql
    Server=localhost
    Port=3306
    Database=ezpublishbasic
    User=ezuser
    Password=password
  3. Generate Exponential Basic Kernel SQL and Load the structure SQL File Data:

    $ ./bin/shell/make_sql.sh;
    $ sudo mysql -u ezuser -p ezpublishbasic < ./bin/sql/publish_mysql.sql;
  4. Load Exponential Basic Kernel SQL Data:
$ sudo mysql -u ezuser -p ezpublishbasic < ./bin/sql/data_mysql.sql;

File Permissions

$ sudo chown -R www-data:www-data .;
$ sudo chmod -R 755 .;

Generate Auto-loads

$ php bin/shell/php/ezpgenerateautoloads.php -k;

Admin Login

To reset admin password, update the MD5 hash in the 'ezuser' table for the user name 'admin'.

Mission Complete!

Your done; View your site at https://yourdomain.com

Themes & Customization

  • Default Theme: design/standard
  • Other Themes: design/

Edit bin/ini/override/site.ini:

[site]
SiteDesign=standard

Modules

Exponential Basic supports new custom modules to be created and enabled to provide for additional customization of the available features and module views.

Enable modules in bin/ini/override/site.ini:

To add a new module, place the module in the kernel directory.

To enable a module add it's directory name to the [site] EnabledModules ini settings array in the file, 'bin/ini/override/site.ini'.

[site]
EnabledModules=eZArticle;eZTrade;eZForum;eZLink;eZPoll;eZAd;eZNewsfeed;eZBug;eZContact;eZTodo;eZCalendar;eZFileManager;eZImageCatalogue;eZMediaCatalogue;eZAddress;eZForm;eZBulkMail;eZMessage;eZQuiz;eZStats;eZURLTranslator;eZSiteManager;eZUser;eZSysInfo

You must also add the module name / directory name to [site] ModuleList setting array separated by ';' characters.

[site]
ModuleList=eZArticle;eZTrade;eZForum;eZLink;eZPoll;eZAd;eZNewsfeed;eZBug;eZContact;eZTodo;eZCalendar;eZFileManager;eZImageCatalogue;eZMediaCatalogue;eZAddress;eZForm;eZBulkMail;eZMessage;eZQuiz;eZStats;eZURLTranslator;eZSiteManager;eZUser;eZSysInfo

Security Tips

  • Use HTTPS in production
  • Restrict .ini and sensitive files via mod_rewrite rules through web server
  • Protect admin website with .htpasswd
  • Remove composer.lock & .git before production
  • Secure environment variables

Troubleshooting

  • Blank Page/500 Error:
    • Check bin/logs/error_*.log
    • Rebuild autoloads
    • Check .htaccess
    • Tail Apache logs
  • DB Connection Errors:
    • Verify credentials
    • Ensure DB service is running
  • mod_rewrite Issues:
    • Ensure .htaccess exists
    • Check Apache AllowOverride

Future Improvement Ideas

  • REST API (optional)
  • Database ORM (optional)
  • SQLite support (optional)
  • Admin panel redesign (optional)
  • Language switcher module (optional)
  • Symfony-based version (like Exponential platform 5)
  • Laravel-based version ((like Exponential platform 5)

Credits & License

Author: Vincent Opar

Editor: Graham Brookins @ 7x

License choice: GNU GFDL v1.3+

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Publisher: 7x

Support: Sponsor Exponential Basic on GitHub