PHP compatibility and project lifecycle
Unknown. The supplied source does not state ProcessWire versions, PHP 8.4 or 8.5 compatibility, license, support status or persistent-worker support. Verify all of these in the official documentation before use.
Official sources checked 2026-10-22. Browser lessons on this site run PHP 8.5.
The only evidence used is the official ProcessWire documentation index. That page is a table of contents, not a technical specification, so many details below are marked unknown on purpose.
What ProcessWire is
The documentation index describes ProcessWire as something you use to "develop websites or applications." On this site it is classified as a CMS and content platform with an API-oriented focus, meaning a CMS and CMF (content management framework). Its documentation sections cover:
- Getting Started
- API Reference
- Front-end
- Selectors
- Tutorials
- Modules and Hooks
- Fields, Types, Input
- Access Control
- Security
- Multi-language
- More Topics
What it is not
Getting the classification right avoids a lot of confusion:
- ProcessWire is not PHP core. PHP is the language and engine. ProcessWire is application software written for it.
- It is not a standalone PHP runtime or an alternative interpreter. It does not replace PHP-FPM, the CLI or any other way of executing PHP.
- It is not an async library or a framework adapter.
- It is not Drupal. Drupal CMS is a separate CMS product, and PHP core is a separate thing from both. Keep three layers apart: the language, a reusable component or framework, and a finished CMS product.
- Swoole and Open Swoole are different projects, and this guide makes no claim about either one working with ProcessWire.
- HHVM targets Hack and is irrelevant to modern PHP CMS work.
Architecture and content model
The source gives only high-level signals:
- Content is retrieved through an API. The docs describe an API Reference covering "all classes and API variables" and a Selectors section on "how to get and find pages." Pages therefore seem to be the central content unit, found by selector queries.
- Front-end output is rendered "with template files," so PHP template files turn content into HTML.
- Content structure is defined with fields and field types, with input fields for editing.
- Behavior is extended through modules and hooks.
- Role-based access control, built-in multi-language features and security guidance are documented as separate topics.
The index does not say how the database is laid out, how templates map to files on disk, or how the admin interface is built. Treat all of that as unknown until you read Getting Started and the API Reference.
Execution model
The source does not describe the request lifecycle, so that is unknown here. The conventional PHP model is a classic request lifetime. A web server hands each request to PHP, PHP builds fresh state, runs the application, sends a response and discards the state. Persistent workers behave differently. A long-lived process boots the application once and handles many requests in memory.
The source does not say that ProcessWire supports persistent workers, and this guide makes no such claim. If you ever run any PHP application that way, you must plan for state leakage. Static properties, singletons, global variables, caches, open connections, the current user, request data and output buffers can all survive from one request to the next. The consequences are one visitor seeing another visitor's data, stale permissions, and memory growth. Cleanup means resetting or rebuilding per-request state at the start or end of every request, closing resources, bounding caches and recycling workers. Verify with the project's own docs before attempting this.
Practical use cases
Based only on the docs index, plausible uses are:
- Content-driven websites rendered through template files.
- Applications that query structured content with selectors.
- Sites that need role-based editing permissions.
- Multi-language sites using the built-in features.
- Sites extended with custom modules and hooks.
Whether it suits a particular project is a judgment you should make after reading the Tutorials and API Reference.
Installation approach
The documentation points to Getting Started for "installation, structure, API and more." The packet contains no commands, requirements or download locations, so this guide invents none. Follow the official installation instructions on the documentation site. As a general safety practice, run development servers bound to 127.0.0.1, use a disposable local database and never expose FastCGI to a network.
Example in this guide
The single example is a small front-end template file plus a PHP syntax check. It assumes you already have a working ProcessWire site installed from the official instructions. The file location, the template-to-file mapping and the availability of the page variable in that context all need to be checked against the official docs. Because the source does not state them, treat the example as a starting point. It is not a browser exercise.
Strengths (as supported by the source)
- The documentation is organized by topic, from getting started to security.
- Access control, multi-language support and security guidance are documented as first-class topics.
- It exposes an API and selector system for working with content.
- It has an extension mechanism through modules and hooks.
Limitations and unknowns
- Lifecycle status is unknown. This guide does not say whether the project is current or historical.
- Current versions, PHP 8.4 or 8.5 compatibility, license, pricing, performance and support status are all unknown from the supplied evidence.
- Whether it works under persistent workers, containers or specific web servers is unknown.
- This page does not say how to install or deploy it.
The learning track in this series uses PHP 8.4, with PHP 8.5 planned. Confirm ProcessWire's compatibility with those versions yourself before relying on it.
Deployment
Deployment details are not in the source. Consult the Security section for long-term maintenance guidance and the Getting Started material for structure. Before going live, review human-verified requirements for your host and keep PHP-FPM or FastCGI sockets on private interfaces only.
Links
The only official reference used is the ProcessWire documentation index, listed in the links below.
Practical examples
These examples have not been run in a live environment yet. Commands and versions follow the official documentation linked on this page; check them before relying on them, and report a problem if one does not work.
Minimal front-end template file with a syntax check
A small PHP template file that prints the current page title with output escaping, followed by a PHP syntax lint. It assumes an existing ProcessWire site installed per the official docs. The file path and the page variable in template scope are assumptions to verify against the official docs and are not confirmed by the supplied source. It is not a browser exercise.
site/templates/basic-page.php
// Candidate template file. Verify the location and the available variables
// against the official ProcessWire documentation before relying on this.
$title = isset($page) ? (string) $page->title : 'Untitled';
<h1> htmlspecialchars($title, ENT_QUOTES, 'UTF-8') </h1>
Install and run
php -l site/templates/basic-page.phpExpected behavior
The lint command should report that no syntax errors were detected. Rendering the template requires a working ProcessWire installation, which is not covered here. When rendered, the page title would be printed as an escaped heading.
It requires PHP on the command line and a ProcessWire site installed by following the official docs. The template location and variable availability are unverified, and PHP 8.4 support by ProcessWire is unknown. It does not demonstrate selectors, fields, modules or hooks.