Server Environment

Server Environment

Although WordPress can work in almost any environment, some environments are more optimal for functionality and performance while others are less so. Below are a few minimum recommendations for server environment configurations within which WordPress operates most efficiently, with consideration for WordPress websites that use third party plugins and themes which commonly introduce additional server-level requirements.

WordPress Environment recommendations

Quick recommendations:

All published posts on compatibility are available at:

Web Server

A web server is piece of software that receives and accepts web requests from website visitor computers, then returns the appropriate web data back to the user. There are many different types of pieces of web server software that run on different operating systems. Generally, if your web server supports and executes PHP files, it should be able to work with WordPress.

The two most common pieces of web server software, and the ones recommended for WordPress, are:

Additional software used by web hosting companies and developers that are known to work well with WordPress are:

Those are the latest versions at the time of writing this document, for WordPress 6.8. Always keep your web server up-to-date to ensure best performance!

PHP

PHP is a programming language on which WordPress code is based. This language runs on the server and it is important to keep it up to date, both for security and functionality.

WordPress supports many versions of PHP, some even obsolete (See PHP Compatibility and WordPress Versions). For hosting companies, the following is recommended:

WordPress versions

Below are details on specific WordPress versions, PHP compatibility for that version and development tickets related to PHP compatibility at the time of release. Tickets related to PHP compatibility can be found at any time by Searching WordPress Trac.

WordPress 6.8

IMPORTANT: WordPress 6.8 is fully compatible with PHP 7.2 (1), 7.3 (1), 7.4 (1), 8.0(1), 8.1, and 8.2 and beta compatible with PHP 8.3, and PHP 8.4. As of the WordPress 6.8 release in April 2025, the term ‘compatible with exceptions’ is no longer used.

What does “beta compatible” or "beta support" mean?

‘Beta compatible’ or ‘beta support’ means that WordPress Core is actively working towards full compatibility with that PHP version, but there may still be some issues that are in the process of being resolved. Below are tickets outlining known issues regarding beta support for PHP 8.3 and 8.4. More information on when a PHP version goes from beta to fully supported is documented by the core team.

WordPress 6.7

IMPORTANT: WordPress 6.7 is compatible with exceptions with PHP 8.0, PHP 8.1, PHP 8.2, and beta compatible with PHP 8.3, and PHP 8.4.

What does ‘compatible with exceptions’ mean?

What does "beta" mean?

  • PHP 8.3

    • Deprecation notices. A deprecation notice is not an error, but is an indicator that the code being cited in the notice will be changed in future php versions. With a deprecation notice, the PHP code will continue to work and nothing is broken.
    • #59231: Prepare for PHP 8.3.. NOTE: Has a patch, but moved to WordPress 6.7.
    • #59232: Introduce #[Override] attribute to mark overloaded methods This attribute helps prevent coding errors by making it clear when a method is overloaded. It also assists with refactoring, debugging, and catching potential breaking changes in the parent class. NOTE: Has a patch, but moved to Future Release.
    • #59233: Improve error handling for unserialize(). maybe_unserialize() function could still be confronted by data with trailing bytes. NOTE: Moved to Future Release.
    • #59654: PHP 8.x: various compatibility fixes for WordPress 6.7. This ticket acts as a central hub for smaller patches that fix specific PHP 8.x failures. It continues the work from previous releases, ensuring that WordPress maintains compatibility with newer PHP versions like PHP 8.0, 8.1, 8.2, and upcoming versions like PHP 8.3. NOTE: Moved to WordPress 6.7.
  • PHP 8.4

    • Deprecation notices. A deprecation notice is not an error, but is an indicator that the code being cited in the notice will be changed in future php versions. With a deprecation notice, the PHP code will continue to work and nothing is broken.
    • #62061: Prepare for PHP 8.4.. NOTE: Has a patch.

Other related tickets

WordPress 6.6

IMPORTANT: WordPress 6.6 is compatible with exceptions with PHP 8.1, and PHP 8.2, and beta compatible with PHP 8.3.

What does ‘compatible with exceptions’ mean?

  • PHP 8.1

    • Not all "passing null to non-nullable" issues have been found. In PHP, you can tell a function exactly what type of information it should accept. If you tell a function to expect a certain type of information, and you give it nothing at all (null is like saying "nothing"), then PHP gets confused and gives an error. This problem happens when someone accidentally gives a function "nothing" when the function wasn’t designed to handle "nothing".
    • _htmlentities() needs the default value of the flags parameter explicitly set_. According to htmlentities(), the default for flags for PHP 8.1 was "changed from ENT_COMPAT to ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401". All use cases for this functionality in WordPress Core are being investigated. NOTE: Has a patch, but moved to WordPress 6.7.
    • Replace most strip_tags() with wp_strip_tags().
      There are rare occasions when the strip_tags() function is passed a null value, which generates a warning that the string is deprecated. NOTE: Has a patch.
    • Update is_serialized function to accept Enums. Enums are not backwards compatible with older PHP versions. NOTE: Has a patch, but moved to WordPress 6.7.
  • PHP 8.2

What does "beta" mean?

  • PHP 8.3
    • Deprecation notices. A deprecation notice is not an error, but is an indicator that the code being cited in the notice will be changed in future php versions. With a deprecation notice, the PHP code will continue to work and nothing is broken.
    • Improve error handling for unserialize(). maybe_unserialize() function could still be confronted by data with trailing bytes. NOTE: Moved to WordPress 6.7.

WordPress 6.5

IMPORTANT: WordPress 6.5 is compatible with exceptions with PHP 8.0, PHP 8.1, and PHP 8.2, and beta compatible with PHP 8.3.

What does ‘compatible with exceptions’ mean?

What does "beta" mean?

  • PHP 8.3
    • Deprecation notices: A deprecation notice is not an error, but is an indicator that the code being cited in the notice will be changed in future php versions. With a deprecation notice, the PHP code will continue to work and nothing is broken.

WordPress 6.4

IMPORTANT: WordPress 6.4 is compatible with exceptions with PHP 8.0, PHP 8.1, and PHP 8.2, and beta compatible with PHP 8.3.

What does ‘compatible with exceptions’ mean?

What does "beta" mean?

  • PHP 8.3
    • Deprecation notices: A deprecation notice is not an error, but is an indicator that the code being cited in the notice will be changed in future php versions. With a deprecation notice, the PHP code will continue to work and nothing is broken.

WordPress 6.3

IMPORTANT: WordPress 6.3 is compatible with exceptions with PHP 8.0 and PHP 8.1, and beta compatible with PHP 8.2.

What does ‘compatible with exceptions’ mean?

What does "beta" mean?

  • PHP 8.2
    • Deprecation notices: A deprecation notice is not an error, but is an indicator that the code being cited in the notice will be changed in future php versions. With a deprecation notice, the PHP code will continue to work and nothing is broken.

About PHP

PHP 8.1 is maintained by the PHP Community only as Security fix only starting 2022-11-26. Keeping your PHP to the latest stable version is important for WordPress speed and security.

Versions prior to PHP 8.1 are not maintained by the PHP Community, although they may receive security updates from operating systems distributions.

End of life PHP versions:

  • PHP 8.3: 2027-12-31
  • PHP 8.2: 2026-12-31
  • PHP 8.1: 2025-12-31
  • PHP 8.0: 2023-11-26 last release: 8.0.30
  • PHP 7.4: 2022-11-28 last release: 7.4.33
  • PHP 7.3: 2021-12-06 last release: 7.3.33
  • PHP 7.2: 2020-11-30 last release: 7.2.34
  • PHP 7.1: 2019-12-01 last release: 7.1.33
  • PHP 7.0: 2019-01-10 last release: 7.0.33
  • PHP 5.6: 2018-12-31 last release: 5.6.40
  • PHP 5.5: 2016-07-21 last release: 5.5.38
  • PHP 5.4: 2015-09-03 last release: 5.4.45
  • PHP 5.3: 2014-08-14 last release: 5.3.29
  • PHP 5.2: 2011-01-06 last release: 5.2.17
  • PHP 5.1: 2006-08-24 last release: 5.1.6
  • PHP 5.0: 2005-09-05 last release: 5.0.5
  • PHP 4.4: 2008-08-07 last release: 4.4.9
  • PHP 4.3: 2005-03-31 last release: 4.3.11
  • PHP 4.2: 2002-09-06 last release: 4.2.3
  • PHP 4.1: 2002-03-12 last release: 4.1.2
  • PHP 4.0: 2001-06-23 last release: 4.0.6

PHP Extensions

WordPress core makes use of various PHP extensions when they’re available. If the preferred extension is missing, WordPress will either have to do more work to do the task the module helps with, or in the worst case, will remove functionality.

Notes:

  • Some extensions are built into PHP (or enabled by default) and require no special action in a typical hosting environment.
  • Other extensions are optional and may need to be installed/enabled depending on how PHP is packaged.

The lists below assume PHP >= 7.2 (the minimum supported PHP version for WordPress at the time of writing).

Built-in extensions (no hosting action required)

The following extensions are part of PHP itself and are always enabled in supported PHP versions (>= 7.2). No hosting configuration is needed:

  • pcre – Regular expression engine used throughout PHP and WordPress.

Required extensions

The PHP extensions listed below are required for a WordPress site to work.

  • json – Used for communications with other servers and processing data in JSON format. (Always enabled in PHP >= 8.0; enabled by default in PHP 7.x but can be disabled in custom builds.)
  • mysqli – Connects to MySQL/MariaDB for database interactions. Many PHP builds use mysqlnd as the underlying driver, but mysqlnd is not a standalone replacement for mysqli.

The PHP extensions listed below are highly recommended in order to allow WordPress to operate optimally and to maximise compatibility with many popular plugins and themes.

  • curl (PHP >= 7.3 requires libcurl >= 7.15.5; PHP >= 8.0 requires libcurl >= 7.29.0 ; PHP >= 8.4 requires libcurl >= 7.61.0) – Performs remote request operations.
  • dom (requires libxml) – Used to validate Text Widget content and to automatically configure IIS7+.
  • exif – Works with metadata stored in images.
  • fileinfo – Used to detect MIME types of file uploads.
  • hash – Used for hashing, including passwords and update packages. (Always enabled in PHP >= 7.4; on PHP 7.2-7.3 it is commonly enabled but not guaranteed.)
  • igbinary – Increases performance as a drop in replacement for the standard PHP serializer.
  • imagick (requires ImageMagick >= 6.2.4) – Provides better image quality for media uploads. See WP_Image_Editor for details. Smarter image resizing (for smaller images), and PDF thumbnail support when Ghost Script is available.
  • intl (PHP >= 7.4.0 requires ICU >= 50.1) – Enable to perform locale-aware operations including but not limited to formatting, transliteration, encoding conversion, calendar operations, conformant collation, locating text boundaries and working with locale identifiers, timezones and graphemes.
  • mbstring – Used to properly handle UTF8 text.
  • openssl (PHP 7.1-8.0 requires OpenSSL >= 1.0.1 / < 3.0; PHP >= 8.1 requires OpenSSL >= 1.0.2 / < 4.0; PHP >= 8.4 requires OpenSSL >= 1.1.1 / < 4.0) – SSL-based connections to other hosts.
  • xml (requires libxml) – Used for XML parsing, such as from a third-party site.
  • zip (requires libzip >= 0.11; recommended libzip >= 1.6) – Used for decompressing Plugins, Themes, and WordPress update packages.

The PHP extensions listed below are recommended to allow some WordPress cache (if necessary). APCu, Memcached, and Redis are alternatives of which only one needs to be used.

  • apcu – In-memory key-value store for PHP (former APC stripped of opcode caching).
  • memcached (requires libmemcached >= 1.0.0) – memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
  • opcache – PHP can be configured to preload scripts into the opcache when the engine starts.
  • redis – PHP extension for interfacing with Redis.

The PHP extensions listed below are optional to improve some WordPress functionality.

  • timezonedb – Timezone Database to be used with PHP’s date and time functions

For the sake of completeness, below is a list of the remaining PHP modules WordPress may use in certain situations or if other modules are unavailable. These are fallbacks or optional and not necessarily needed in an optimal environment, but installing them won’t hurt.

  • bc – For arbitrary precision mathematics, which supports numbers of any size and precision up to 2147483647 decimal digits.
  • filter – Used for securely filtering user input.
  • image (requires libgd >= 2.1.0; requires zlib >= 1.2.0.4; optional freetype2) – If Imagick isn’t installed, the GD Graphics Library is used as a functionally limited fallback for image manipulation.
  • iconv (requires libiconv/POSIX) – Used to convert between character sets.
  • shmop – Shmop is an easy to use set of functions that allows PHP to read, write, create and delete Unix shared memory segments.
  • simplexml (requires libxml) – Used for XML parsing.
  • sodium (bundled with PHP as of 7.2.0; requires libsodium >= 1.0.8) – Validates signatures and provides securely random bytes.
  • xmlreader (requires libxml) – Used for XML parsing.
  • zlib (requires zlib >= 1.2.0.4) – Gzip compression and decompression.

These extensions are used for file changes, such as updates and plugin/theme installation, when files aren’t writeable on the server.

  • ssh2 (requires OpenSSL and libssh >= 1.2; recommended libssh >= 1.2.9) – Provide access to resources (shell, remote exec, tunneling, file transfer) on a remote machine using a secure cryptographic transport.
  • ftp – Implement client access to files servers speaking the File Transfer Protocol (FTP).
  • sockets – Implements a low-level interface to the socket communication functions based on the popular BSD sockets.

The priority of the transports are Direct file IO, SSH2, FTP PHP Extension, FTP implemented with Sockets, and FTP implemented through PHP alone.

System Packages

Database

For data storage, WordPress uses systems compatible with MySQL.

Officially recommended versions

Below are the officially recommended Long Term Support versions of MySQL and MariaDB.

| Software | Version | EOL Date |
|———–|————|——————-|
| MySQL | 8.4 LTS | April 2032 |
| MySQL | 8.0 LTS | April 2026 |
| MariaDB | 11.8 LTS | June 2030 |
| MariaDB | 11.4 LTS | May 29, 2029 |
| MariaDB | 10.11 LTS | February 16, 2028 |
| MariaDB | 10.6 LTS | July 6, 2026 |

End of life MySQL versions

The following versions of MySQL have reached their end of life (EOL) and are no longer supported by the MySQL community. It is highly recommended to upgrade to a supported version for security and performance reasons.

| Version | Initial GA Release | Final Release | EOL Date |
|———|——————–|—————————|——————-|
| 9.2* | January 21, 2025 | 9.2.0 (January 21, 2025) | April 15, 2025 |
| 9.1* | October 15, 2024 | 9.1.0 (October 15, 2024) | January 21, 2025 |
| 9.0* | July 1, 2024 | 9.0.1 (July 23, 2024) | October 15, 2024 |
| 8.3* | January 16, 2024 | 8.3.0 (January 16, 2024) | July 1, 2024 |
| 8.2* | October 25, 2023 | 8.2.0 (October 25, 2024) | January 16, 2024 |
| 8.1* | July 18, 2023 | 8.1.0 (July 18, 2023) | October 25, 2023 |
| 5.7 | October 21, 2015 | 5.7.44 (October 25, 2023) | October 21, 2023 |
| 5.6 | February 5, 2013 | 5.6.51 (January 20, 2021) | February 5, 2021 |
| 5.5 | December 3, 2010 | 5.5.62 (October 22, 2018) | December 3, 2018 |
| 5.1 | November 14, 2008 | 5.1.73 (December 3, 2013) | December 31, 2013 |
| 5.0 | October 19, 2005 | 5.0.96 (March 21, 2012) | March 21, 2012 |

End of life MariaDB versions

The following versions of MariaDB have reached their end of life (EOL) and are no longer supported by the MariaDB community. It is highly recommended to upgrade to a supported version for security and performance reasons.

| Version | Initial GA Release | Final Release | EOL Date |
|———|——————–|—————————–|——————-|
| 11.5 | August 15, 2024 | 11.5.2 (August 15, 2024) | November 21, 2024 |
| 11.3 | February 19, 2024 | 11.3.2 (February 19, 2024) | May 16, 2024 |
| 11.2 | November 21, 2023 | 11.2.6 (November 4, 2024) | November 21, 2024 |
| 11.1 | August 21, 2023 | 11.1.6 (August 14, 2024) | August 21, 2024 |
| 11.0 | June 7, 2023 | 11.0.6 (May 17, 2024) | June 6, 2024 |
| 10.10 | November 17, 2022 | 10.10.7 (November 14, 2023) | November 17, 2023 |
| 10.9 | August 22, 2022 | 10.9.8 (August 14, 2023) | August 22, 2023 |
| 10.8 | May 21, 2022 | 10.8.8 (May 10, 2023) | May 20, 2023 |
| 10.7 | February 14, 2022 | 10.7.8 (February 6, 2023) | February 9, 2023 |
| 10.5 | June 24, 2020 | 10.8.8 (May 10, 2023) | June 24, 2025 |
| 10.4 | June 16, 2019 | 10.4.34 (May 17, 2024) | June 18, 2024 |
| 10.3 | May 25, 2018 | 10.3.39 (May 10, 2023) | May 25, 2023 |
| 10.2 | May 23, 2017 | 10.2.44 (May 21, 2022) | May 23, 2022 |
| 10.1 | October 17, 2015 | 10.1.48 (November 4, 2020) | October 17, 2020 |
| 10.0 | March 31, 2014 | 10.0.38 (January 31, 2019) | March 31, 2019 |
| 5.5 | April 11, 2012 | 5.5.68 (May 12, 2020) | April 11, 2020 |
| 5.3 | February 29, 2012 | 5.3.12 (January 30, 2013) | March 1, 2017 |
| 5.2 | November 10, 2010 | 5.2.14 (January 30, 2013) | November 10, 2015 |
| 5.1 | February 1, 2010 | 5.1.67 (January 30, 2013) | February 1, 2015 |

Innovation Releases

In addition to Long Term Support versions, both MariaDB and MySQL have "innovation releases". These releases have much shorter support periods (typically 2-6 months at most) and are intended for users who need access to the latest features.

Innovation releases are generally production-ready from a quality and stability perspective and safe to use. However, using these releases in production is not recommended because:

  • any new features included in innovation releases are subject to change in the future.
  • support (including security fixes) is limited to a short period of time measured in months, not years.

As a way to catch problems with new features that will land in upcoming LTS versions, WordPress Core tests against actively supported innovation releases. However, the project does not recommend these versions for general use.

MySQL Innovation Releases

| Version | Initial GA Release | Final Release | EOL Date |
|———-|——————–|————————–|——————|
| 9.3* | April 15, 2025 | | July 2025 |
| 9.2 | January 21, 2025 | 9.2.0 (January 21, 2025) | April 15, 2025 |
| 9.1 | October 15, 2024 | 9.1.0 (October 15, 2024) | January 21, 2025 |
| 9.0 | July 1, 2024 | 9.0.1 (July 23, 2024) | October 15, 2024 |
| 8.3 | January 16, 2024 | 8.3.0 (January 16, 2024) | July 1, 2024 |
| 8.2 | October 25, 2023 | 8.2.0 (October 25, 2024) | January 16, 2024 |
| 8.1 | July 18, 2023 | 8.1.0 (July 18, 2023) | October 25, 2023 |

* Indicates the current innovation release.

MariaDB Innovation/Short-Term Releases

The MariaDB project has decided to retire the concept of innovation releases, replacing them with the concept of "rolling GA releases". This will start with the 12.0 release.

Previously MariaDB referred to these releases as "short-term releases".

| Version | Release Type | Initial GA Release | Final Release | EOL Date |
|———|————–|——————–|—————————–|——————-|
| 11.5 | Innovation | August 15, 2024 | 11.5.2 (August 15, 2024) | November 21, 2024 |
| 11.3 | Innovation | February 19, 2024 | 11.3.2 (February 19, 2024) | May 16, 2024 |
| 11.2 | Short-term | November 21, 2023 | 11.2.6 (November 4, 2024) | November 21, 2024 |
| 11.1 | Short-term | August 21, 2023 | 11.1.6 (August 14, 2024) | August 21, 2024 |
| 11.0 | Short-term | June 7, 2023 | 11.0.6 (May 17, 2024) | June 6, 2024 |
| 10.10 | Short-term | November 17, 2022 | 10.10.7 (November 14, 2023) | November 17, 2023 |
| 10.9 | Short-term | August 22, 2022 | 10.9.8 (August 14, 2023) | August 22, 2023 |
| 10.8 | Short-term | May 21, 2022 | 10.8.8 (May 10, 2023) | May 20, 2023 |
| 10.7 | Short-term | February 14, 2022 | 10.7.8 (February 6, 2023) | February 9, 2023 |

Other MySQL servers

While WordPress does not regularly test against these MySQL servers, they are known to perform well.

Although WordPress may run on older versions, it is recommended to use these or newer ones for security and performance reasons.

Experimental: SQLite (feature plugin)

Note: WordPress Core officially supports MySQL/MariaDB for production. SQLite is opt-in and experimental via the community SQLite Database Integration feature plugin. Treat this as a testing/evaluation path for hosts—not a wholesale replacement.

Host feedback wanted
If you trial this with cohorts, please share: traffic profile, caching, write rates, DB file sizes, error logs, and any plugin/theme incompatibilities. Feedback is most useful if a future Core merge is proposed.

How do I know which version I have?

If you have WordPress 5.2+, the WordPress Admin already has tools with that information in the Site Health section (at Tools in the menu).

If you have an older version, you can activate the Site Health section installing the WordPress Community Plugin called Health Check & Troubleshooting (more help for this plugin).

[info]If you’re interested in improving this handbook, check the Github Handbook repo, or leave a message in the #hosting channel of the official WordPress Slack.[/info]