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)
Create the database:
CREATE DATABASE ezpublishbasic;
CREATE USER 'ezuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON ezpublishbasic.* TO 'ezuser'@'localhost';
FLUSH PRIVILEGES;
Edit bin/ini/override/site.ini:
[site]
DatabaseImplementation=mysql
Server=localhost
Port=3306
Database=ezpublishbasic
User=ezuser
Password=password
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;
- 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