Getting started
Requirements
What your server needs before you unpack Zender onto it.
Server requirements
You need PHP 8.4.1 or newer. Zender's own code contains no version check, but the bundled dependency set declares that minimum, and Composer's generated platform guard enforces it.
php -v before uploading anything.
PHP extensions
Your PHP install needs at least:
- PDO with the MySQL driver — how Zender talks to the database in normal operation.
- mysqli — used by the installer and the updater to import SQL files. A host with PDO but no mysqli fails at install.
- zip, gd, mbstring, openssl, dom, libxml, xmlreader, fileinfo, zlib, json, ctype and filter — required by the bundled libraries for plugin installs, spreadsheet import and export, and QR generation.
- cURL (strongly recommended) — used for every outbound HTTP request Zender makes: SMS gateways, webhooks, the WhatsApp server connection, and other integrations. Without it, outbound requests still work through a slower fallback, but cURL is the better-tested path and should be enabled.
Most standard PHP installs — and virtually every shared-hosting or managed PHP stack — already ship both of these enabled.
Database
Zender requires a MySQL or MariaDB server with InnoDB and
UTF-8 (4-byte, utf8mb4) character set support — standard on any
current MySQL or MariaDB build. The installer imports Zender's full schema into a
database you provide; it does not create the database for you. See Installation
for how to create one and what privileges the database user needs.
Web server
Zender ships ready-to-use rewrite rules for both Apache (.htaccess,
requires mod_rewrite) and nginx (.nginx.conf, included
from your server block). Both route every request that isn't an existing file or
directory through Zender's single entry point, and both also block direct access
to Zender's own internal PHP, template, and data files so they can't be
downloaded or executed directly.
Zender can be installed at your domain's root or inside a subdirectory — it detects which one it's running from automatically and adjusts its own links accordingly. Wherever you put it, that directory needs the rewrite rules above active.