OJS Server Requirements & PHP Compatibility Matrix: OJS 3.3, 3.4, and 3.5
Detailed compatibility breakdown for Open Journal Systems versions 3.3 LTS, 3.4, and 3.5. Includes required PHP extensions, memory limits, and database engine specifications.
Real Problem
System administrators often attempt to run legacy OJS 3.2 on PHP 8.1 or force modern OJS 3.4 onto deprecated PHP 7.4, triggering silent fatal errors in the Smarty template engine and database connection layer.
Practical Solution
Follow the authoritative PKP compatibility matrix: run OJS 3.3 LTS on PHP 7.4 through 8.1, OJS 3.4 on PHP 8.0 through 8.2, and OJS 3.5 on PHP 8.1 through 8.3 with all required PHP extensions compiled and enabled.
The Importance of Version Parity in Academic Publishing
Open Journal Systems undergoes continuous architectural evolution. OJS 3.3 LTS represents the culmination of the legacy Smarty 3 template architecture and ADOdb database abstraction, whereas OJS 3.4 and 3.5 introduce Laravel-inspired illumination components, modern queue workers, and PSR-standardized dependency injection.
Because of these foundational architectural differences, running an incompatible PHP version or missing a single required PHP module will silently break critical editorial functions, such as automated email dispatch, Crossref DOI deposits, or galley file uploads.
Authoritative Version Compatibility Matrix
The following matrix details the verified compatibility tiers for active and long-term supported OJS releases:
OJS 3.3.0.x (LTS):
- Supported PHP Versions: PHP 7.3, PHP 7.4, PHP 8.0, and PHP 8.1.
- Recommended PHP Version: PHP 8.0 or 8.1 with opcache enabled.
- Database Engines: MySQL 5.7+, MariaDB 10.2+, PostgreSQL 9.5+.
- Status: Long-Term Support (LTS). Ideal for university presses seeking rock-solid editorial stability without annual major workflow adjustments.
OJS 3.4.0.x:
- Supported PHP Versions: PHP 8.0, PHP 8.1, and PHP 8.2.
- Recommended PHP Version: PHP 8.1 or 8.2.
- Database Engines: MySQL 8.0+, MariaDB 10.4+, PostgreSQL 12+.
- Status: Current Stable. Features revamped submission dashboards, modern mailable templates, and enhanced user invitation workflows.
OJS 3.5.0.x (Next-Generation):
- Supported PHP Versions: PHP 8.1, PHP 8.2, and PHP 8.3.
- Recommended PHP Version: PHP 8.2 or 8.3.
- Database Engines: MySQL 8.0+, MariaDB 10.5+, PostgreSQL 14+.
- Status: Modern cutting-edge release featuring advanced REST APIs, Vue 3 components, and container-ready architecture.
Comprehensive PHP Module Checklist
Every production server hosting OJS must have the following PHP modules compiled, enabled, and verified:
1. php-mbstring: Crucial for multi-byte UTF-8 string parsing in titles and abstracts.
2. php-xml and php-dom: Powers Crossref XML deposits, PubMed exports, and JATS parsing.
3. php-curl: Handles outbound API communication to ORCID, Crossref, Datacite, and Zenodo.
4. php-gd or php-imagick: Automatically generates thumbnail previews for issue covers and author headshots.
5. php-intl: Formats dates, numbers, and locale strings matching institutional conventions.
6. php-zip: Handles plugin manager tarball extraction and batch native XML imports.
7. php-mysql or php-pgsql: High-speed native database connectivity.
Essential php.ini Directives for High-Throughput Journals
Default PHP installations restrict file uploads to 2MB and memory limits to 128MB. For scholarly journals dealing with high-resolution scientific figures and extensive PDF supplements, these defaults must be modified in both /etc/php/X.X/fpm/php.ini and /etc/php/X.X/cli/php.ini:
- upload_max_filesize = 64M
- post_max_size = 64M
- memory_limit = 256M (or 512M on editorial workstations)
- max_execution_time = 180
- max_input_vars = 5000 (essential for multi-category editorial settings forms)
- opcache.enable = 1
- opcache.memory_consumption = 128
- opcache.max_accelerated_files = 10000
Step-by-Step Action Plan
Identify Target OJS Version
Determine whether your journal requires OJS 3.3 LTS (stability focus) or OJS 3.4/3.5 (modern features & REST APIs).
Install Compliant PHP Runtime
Configure PHP 8.1 for OJS 3.3 LTS or PHP 8.2 for OJS 3.4/3.5 using Ondrej Surý PPA on Debian/Ubuntu.
Enable Core PHP Modules
Install php-mbstring, php-xml, php-curl, php-gd, php-mysql, php-intl, php-zip, and php-bcmath.
Tune php.ini Runtime Directives
Set memory_limit = 256M (512M for large galley generation), max_execution_time = 120, upload_max_filesize = 64M, and post_max_size = 64M.
Verify CLI and Web SAPI Parity
Verify that the CLI PHP version matches the PHP-FPM web version to avoid upgrade script mismatches.
Questions People Usually Ask
Does OJS 3.3 LTS support PHP 8.2 or 8.3?
Official PKP support for OJS 3.3 LTS caps support at PHP 8.1. Running OJS 3.3 on PHP 8.2 triggers fatal deprecation errors and dynamic property notices in Smarty 3 and ADOdb.
What PHP extensions are strictly mandatory for OJS?
Mandatory extensions are mbstring (multilingual strings), xml/dom (JATS and Crossref metadata), curl (ORCID and Crossref API sync), gd or imagick (issue cover thumbnails), mysqli or pdo_mysql (database), intl (internationalization), and zip (plugin upload/export).
How much RAM is recommended in php.ini for OJS?
We recommend memory_limit = 256M for everyday editorial use, and 512M or 1024M when generating large XML/PDF galleys or processing full journal XML export packages.
Need a Server Compatibility Audit for OJS?
AcademiaTech audits your current server environment to verify PHP extensions, database collations, and memory allocation before you install or upgrade.