Skip to content

Requirements and Installation

Alan Paynter edited this page Jul 19, 2026 · 1 revision

Requirements and Installation

This page covers what eveBB needs to run, how to install it with install.php, and what ends up in config.php.

Requirements

PHP

  • PHP 8.1 or later is the supported platform (declared in composer.json as "php": ">=8.1"). eveBB is fully compatible with PHP 8.1–8.4.
  • eveBB has no runtime Composer dependenciescomposer.json requires only PHP itself. (PHPUnit is a dev-only dependency for running the test suite.)
  • Note: the installer's own hard floor (MIN_PHP_VERSION in install.php) is 5.6.4 — it will refuse to run below that — but 8.1+ is what the project targets and tests against.

Database

One of:

  • MySQL / MariaDB — via the classic mysqli extension or PDO. Minimum MySQL version enforced by the installer: 5.0.6 (MIN_MYSQL_VERSION).
  • SQLite 3 — via pdo_sqlite. No database server needed; the whole forum lives in a single file. The driver requires SQLite 3.25+ (for RENAME COLUMN) and ideally 3.35+ (for DROP COLUMN).
  • PostgreSQL — via the classic pgsql extension or PDO. Minimum version enforced by the installer: 7.0.0 (MIN_PGSQL_VERSION); in practice the project recommends PostgreSQL 10+.

PHP extensions

  • mbstring — recommended but optional. The bundled UTF-8 library (include/utf8/) auto-detects mbstring and uses it when present; otherwise it falls back to a native pure-PHP implementation. You can force either path by defining UTF8_USE_MBSTRING or UTF8_USE_NATIVE in config.php.
  • GD + OpenSSL — needed only for the optional registration CAPTCHA (and GD for avatar processing/logo uploads).
  • ZipArchive — needed only for the one-click updater and for installing style/plugin zips through the admin console.
  • curl or allow_url_fopen — needed only for the one-click updater's release checks.

Filesystem

The installer checks that these are writable by the web server:

  • cache/ (or wherever FORUM_CACHE_DIR points) — for generated cache files.
  • img/avatars/ — for avatar uploads.

Supported database types ($db_type values)

The installer offers only the types your PHP build actually supports:

$db_type Driver file (include/dblayer/) Shown in installer as Requires
mysqli mysqli.php MySQL Improved mysqli extension
mysqli_innodb mysqli_innodb.php MySQL Improved (InnoDB) mysqli extension + InnoDB engine
mysql mysql.php MySQL (PDO) PDO with mysql driver
pgsql pgsql.php PostgreSQL pgsql extension
pgsql_pdo pgsql_pdo.php PostgreSQL (PDO) PDO with pgsql driver
sqlite sqlite.php SQLite3 (PDO) PDO with sqlite driver

Notes:

  • The sqlite type is a SQLite3-on-PDO driver. It replaced FluxBB's historical SQLite2 driver but kept the same db_type name. It sets PRAGMA busy_timeout = 10000 to play well with concurrent requests.
  • The legacy spelling mysql_innodb is still accepted in config.php as an alias for mysqli_innodb (this eases FluxBB migrations).
  • For mysqli_innodb, the installer verifies the InnoDB engine is actually available before proceeding.

Installing

  1. Upload the files to your web server (or unpack a release zip there).
  2. Point your browser at install.php and follow the instructions.
  3. When the installer finishes, remove install.php. If you forget, the admin index shows an alert with a one-click Delete it link, and the one-click updater also removes it automatically after a successful update.

What the installer asks for

Database setup

  • Database type — one of the types above, filtered to what your PHP supports.
  • Database server hostname — default localhost. Ignored for SQLite.
  • Database name — for SQLite, enter a writable file path (for example data/forum.sqlite) instead; no server or credentials are needed.
  • Database username / password — not needed for SQLite.
  • Table prefix — optional; must match ^[a-zA-Z_][a-zA-Z0-9_]*$ (letters, digits, underscores, not starting with a digit) and be at most 30 characters in the form. For SQLite the prefix sqlite_ is rejected (reserved namespace).

Administration setup

  • Administrator username — 2–25 characters. May not be "Guest", an IP address, contain BBCode, or mix brackets and quotes.
  • Passwordminimum 9 characters, entered twice.
  • Administrator email address.

Board setup

  • Board title and Board description (description may contain HTML).
  • Base URL — the full URL of the forum, auto-guessed from the request; check it carefully.

Appearance

  • Default language (from the installed language packs under lang/).
  • Default style — defaults to Carbon, the bundled style.

What the installer creates

  • All forum tables (with your prefix): bans, categories, censoring, config, forum_perms, forums, groups, online, login_attempts, posts, reports, search_cache, search_matches, search_words, topic_subscriptions, forum_subscriptions, topics, users.
  • The four preset groups — Administrators (ID 1), Moderators (2), Guests (3), Members (4) — with Members as the default group for new registrations.
  • The Guest account (user ID 1) and your administrator account (user ID 2), the admin password hashed with bcrypt ($password_hash_cost = 10).
  • A "Test category" containing a "Test forum" with one test topic, already indexed for search.
  • Sensible default settings, including: login throttle on (5 attempts, 15-minute lockout), registration CAPTCHA on, required profile details at registration on, the visual editor on, and avatars enabled if PHP file_uploads is on (max 90×90 px, 256000 bytes).

config.php

At the end, the installer writes config.php into the forum root. If the root isn't writable, it instead offers the generated config.php as a download so you can upload it manually via FTP/SFTP. The file contains:

$db_type       = '...';
$db_host       = '...';
$db_name       = '...';
$db_username   = '...';
$db_password   = '...';
$db_prefix     = '...';
$p_connect     = false;          // persistent DB connections
$cookie_name   = 'pun_cookie_XXXXXX';  // random per-install
$cookie_domain = '';
$cookie_path   = '/';
$cookie_secure = 0;
$cookie_seed   = '...';          // 32-char random seed (also keys the CAPTCHA)
$password_hash_cost = 10;        // bcrypt cost

define('PUN', 1);

The base URL is not stored in config.php — it lives in the database as the o_base_url setting (Administration → Options).

Optional constants you may add to config.php:

Constant Effect
FORUM_CACHE_DIR Move the cache directory (default cache/ in the forum root).
FORUM_DEFAULT_CHARSET Override the assumed pre-UTF-8 connection charset during a legacy upgrade.
FORUM_UPDATE_API Point the one-click updater at a different releases API (mirrors/testing).
PUN_DEBUG Enable debug output.
UTF8_USE_MBSTRING / UTF8_USE_NATIVE Force the UTF-8 layer's backend.

If the forum has no configuration

Any page load without a valid config.php (specifically, without the PUN constant defined) redirects straight to install.php. Re-running install.php on an installed board is blocked ("Already installed").

After installation

  • Log in with your administrator account and visit Administration → Options to review the board settings (base URL, timezone, email addresses, registration policy).
  • Delete install.php if you haven't.
  • Set up cron-free maintenance is not required — eveBB has no scheduled-task dependency; everything (cache regeneration, pruning of expired data) happens inline.

Running the tests (developers)

php tests/lite/run.php tests/functions tests/characterization   # unit tests
DB_TYPE=sqlite DB_NAME=/tmp/t.sqlite \
  php tests/lite/run.php tests/integration                      # DB contract
DB_TYPE=sqlite DB_NAME=/tmp/e2e.sqlite ./tests/e2e/run.sh       # end-to-end

The bundled tests/lite runner is PHPUnit-API-compatible; the same test files run unchanged under real PHPUnit (composer install && composer test).