PHP 8.5.12 download for Windows and list of all changes

Download PHP 8.5.12 for Windows from the official php.net downloads page, where the x64 and x86 Thread Safe and Non Thread Safe zips went up on 21 October 2026.

PHP 8.5.12 is a security release that fixes two critical remote code execution flaws, CVE-2026-109618 and CVE-2026-109619, so every PHP 8.5 install serving web requests needs it now.

This guide lists every official Windows file with its SHA256 hash, the source tarballs, the install and upgrade steps, and the complete 8.5.12 changelog. For other branches, start from our PHP update guide.

PHP 8.5.12 download for Windows and list of all changes
On php.net, pick Windows, ZIP Downloads and version 8.5 to reach the PHP 8.5 (8.5.12) builds. (Image: php.net)

PHP 8.5.12 download for Windows

PHP 8.5.12 ships for Windows as zip archives built with Visual Studio 2022 (VS17). There is no installer: you extract the zip into a folder.

  1. Open the official downloads page at https://www.php.net/downloads.php in your browser.
  2. Under I work with, pick Windows, then ZIP Downloads, then version 8.5.
  3. Confirm the heading reads PHP 8.5 (8.5.12) and the build date shows 2026-Oct-21.
  4. Under VS17 x64 Non Thread Safe or VS17 x64 Thread Safe, select Zip (the next section explains which one you need).
  5. Compare the downloaded file's SHA256 hash with the hash printed under the Zip link before you extract it.

The old address https://windows.php.net/download/ now redirects to the same php.net Windows downloads page. If you already use PHP on this PC, the existing PHP download guide for Windows and Mac covers first-time setup in more depth.

PHP 8.5.12 Windows zip files, sizes and SHA256 hashes

These are the four PHP 8.5.12 builds listed on php.net, each dated 2026-Oct-21 13:48:01 UTC. Each build also has a Debug Pack and a Development package (SDK for building extensions) that most users can skip.

Build Zip size Zip SHA256
VS17 x64 Non Thread Safe 34.62MB 2ab242af38d76bdf417cde5ec048b1bcd76a5a40f39a3d15d5f046f38571c477
VS17 x64 Thread Safe 34.76MB 660f3ff6ccbdf60f9607ef54bdba85ee22a58d61fd3633b38a93d57fb7c3d184
VS17 x86 Non Thread Safe 31.12MB d631c38d8540fa06800ffe358de8704ba2a9565f5179e28b9266de647dc79ed0
VS17 x86 Thread Safe 31.17MB bb7b52a3af46b9ad80251b922812dec02c2c6bfb1e979858a15010f006ae6180

To check a hash in PowerShell, run Get-FileHash .\<zip name> -Algorithm SHA256 in the folder that holds the zip and compare the result with the table.

Thread Safe vs Non Thread Safe: which PHP build to download

php.net recommends the x64 builds, because almost all Windows installations support x64. The Thread Safe choice depends only on how your web server loads PHP.

How you run PHP Download this 8.5.12 build Why
Apache HTTP Server loading PHP as a module (mod_php) VS17 x64 Thread Safe TS builds are for multithreaded SAPIs loaded as a web server module
IIS with FastCGI VS17 x64 Non Thread Safe php.net says to use NTS for FastCGI with IIS
Command line scripts, Composer, local tools VS17 x64 Non Thread Safe The PHP manual recommends NTS for command-line scripts
32-bit Windows only VS17 x86 build of the same type x86 builds are for 32-bit systems
Windows on ARM None The PHP manual says PHP does not currently run on Windows RT or Windows on ARM

Match the build to the one you already run when upgrading. Mixing a TS php.exe with NTS extension DLLs fails to load the extensions.

PHP 8.5.12 system requirements on Windows

Requirement What PHP 8.5.12 needs
Windows version Windows 8 or Windows Server 2012 or later (required since PHP 8.3.0)
Architecture 32-bit x86 or 64-bit x64; no Windows on ARM build
Runtime Microsoft Visual C++ Redistributable for Visual Studio 2015-2022, x64 for x64 builds and x86 for x86 builds
Compiler of the official build Visual Studio 2022 (VS17)
Support window PHP 8.5 gets active support until 31 Dec 2027 and security fixes until 31 Dec 2029
PHP 8.5.12 download requirements on Windows from the official PHP manual
PHP needs Windows 8 or Windows Server 2012 or later, plus the Visual C++ Redistributable matching the x86 or x64 build. (Image: php.net)

Install PHP 8.5.12 on Windows

These steps upgrade an existing manual PHP install or set up a fresh one from the zip.

  1. Install the Microsoft Visual C++ Redistributable for Visual Studio 2015-2022 that matches your build (x64 or x86); the installer says so if it is already present.
  2. Stop your web server (Apache service, or the IIS site's application pool) so no PHP files are in use.
  3. Copy your current PHP folder, including php.ini, to a backup location.
  4. Extract the PHP 8.5.12 zip into your PHP folder, replacing the old files.
  5. Copy your backed-up php.ini back into the PHP folder if the extract replaced or removed it.
  6. Start the web server again so every worker loads the new PHP binaries.

php.net also lists a winget route for PHP 8.5 on Windows: winget install PHP.PHP.8.5 installs the Thread Safe build. Check the version it reports afterwards, because the winget catalog can lag the php.net release. On Linux or XAMPP, update PHP with your package manager or XAMPP instead of using the Windows zip.

How to check PHP 8.5.12 is installed

  1. Open Command Prompt or PowerShell in your PHP folder, or anywhere if PHP is on your PATH.
  2. Run php -v.
  3. Confirm the first line starts with PHP 8.5.12; it also shows (ZTS …) for a Thread Safe build or (NTS …) for a Non Thread Safe build.
  4. For the web server, create a page containing <?php phpinfo(); and open it in your browser.
  5. Confirm the page header reads PHP Version 8.5.12, then delete the page.

If the command line shows 8.5.12 but the web page shows an older version, the web server is still loading another PHP folder or was not restarted.

PHP 8.5.12 source code download

php.net publishes the PHP 8.5.12 source as three tarballs, all dated 21 Oct 2026, each with a GPG signature (sig) link beside it. The PHP project releases binaries only for Windows; Linux and macOS users get PHP from their distribution or package provider, or build it from this source.

File Size SHA256
php-8.5.12.tar.gz 23,896Kb 81a0f450349e84b08eb43faa85f8a4c835684f3cc1c50471775d1317a046c525
php-8.5.12.tar.bz2 18,738Kb ffb60edc437ced63b5137e4984db379a8111c50049c711510d8b958277efc1a8
php-8.5.12.tar.xz 14,213Kb 08bc2eba2a588654ade1357174aa646b761556c862dda0678345ee29ed481209

The tarballs are on https://www.php.net/downloads.php?source=Y, under Current Stable PHP 8.5.12. On Linux, run sha256sum php-8.5.12.tar.xz and compare the output with the table.

PHP 8.5.12 download source code tarballs with SHA256 checksums
The php-8.5.12 source comes as tar.gz, tar.bz2 and tar.xz, each with a GPG signature and a Copy button for its SHA256 hash. (Image: php.net)

What's new in PHP 8.5.12: security fixes

PHP 8.5.12 is a security release. php.net rates both flaws critical, and its advance notice gave each a CVSS v4.0 score of 9.2.

CVE Advisory Type What goes wrong
CVE-2026-109618 GHSA-w8hw-w9fx-j79w RCE via OOM corruption Out-of-memory handling can interrupt PHP while internal request data is only partly initialised, and request cleanup may then treat the invalid data as valid
CVE-2026-109619 GHSA-6wmf-4rv5-p3rp RCE via stale global state Request-owned internal state can survive after its memory is freed, and a later request on the same worker may use it before normal initialisation resets it

php.net says every PHP installation serving web requests is at risk, including PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. The risk is highest for mod_php, where a demonstrated exploit lets an unauthenticated request trigger the attack before any application code runs.

php.net states there are no complete mitigations and updating is the only safe choice. If you cannot patch at once, php.net's partial mitigations for both CVEs reduce exposure but do not make an install safe.

PHP 8.5.12 security advisory for critical remote code execution vulnerabilities
The 21 Oct 2026 advisory lists CVE-2026-109618 and CVE-2026-109619, fixed in PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35. (Image: php.net)

Full PHP 8.5.12 changelog

Beyond the two security fixes, the PHP 8.5.12 ChangeLog on php.net lists bug fixes across core and most bundled extensions. Grouped by extension, these are the changes.

Extension Changes in PHP 8.5.12
Core Fixed GHSA-w8hw-w9fx-j79w and GHSA-6wmf-4rv5-p3rp (state corruption via bailout); optimizer constant comparison crash (GH-23644); NAN warning in print_r() (GH-23662); GC inconsistency with lazy objects (GH-21999); AVX reported as supported when the OS has not enabled AVX state; ZEND_ASSERT violation in include/eval (GH-23980); use-after-free with dl()-loaded frameless functions; Windows System V shared memory emulation attaching past the mapping; destructor exceptions during GC inside a Fiber; two OSS-Fuzz assertion failures
BCMath BcMath\Number results truncating to zero keeping a negative sign
BZ2 Double close and use-after-free when bzopen() gets a stream resource
CLI Windows ZTS CLI refreshing its TSRMLS cache (GH-22567); built-in server file descriptor leak on HEAD requests (GH-23764), crash on reset clients and truncated error pages
DOM Use-after-free when re-constructing DOMXPath; getElementById() for SVG and MathML ids; attribute namespaces in parsed fragments; HTMLCollection::namedItem() failures (GH-23887); XPath context lost after php:function() callbacks
FFI Crashes with callbacks from __call() trampolines and released array callables
FTP Cryptic error on servers without TLS session resumption on data connections (GH-23619)
GD Undefined behaviour with INT_MAX-sized GD2 chunks and malformed GIF LZW data
Intl Cloned IntlDateFormatter, MessageFormatter and UConverter fixes; unconstructed Collator checks; grapheme_strstr(), grapheme_strpos() and grapheme_strrpos() match errors; IntlDateFormatter::parse() offset handling
Lexbor Upstream patches fixing a heap buffer overflow in :lexbor-contains() parsing, decode replay overflows and several URL parsing and serialisation bugs
MBString mb_strpos() reading past a truncated UTF-8 haystack (GH-23106); surrogates emitted in UTF-8 output
MySQLi / MySQLnd Assertion after failed reconnection (GH-22854); field_count not reset on OK packet; leak when closing a statement on a killed connection
Opcache Several tracing JIT wrong-result and crash bugs (GH-23693, GH-23628, GH-23679, GH-23991, GH-20890); optimizer folding -0.0 (GH-24063); heap overflow with FCCs and inlining; unsound escape analysis; file cache reuse crash
OpenSSL Socket left non-blocking after a handshake timeout; feof() on TLS streams after close_notify on Windows
PCNTL Queued signals dropped when an exception is pending or a handler throws; /proc/self paths after pcntl_fork() (GH-23986)
PDO and drivers getColumnMeta() out-of-bounds read; bindColumn(), execute(), setFetchMode() and ATTR_STATEMENT_CLASS fixes; use-after-free from __toString() during execute(); persistent instance rollback (GH-23962); PDO_DBLIB segfault (GH-23741); PDO_Firebird empty BLOBs (GH-23758)
PGSQL pg_lo_write() rejecting null bytes; removed pg_service()
Readline Heap over-read with an empty cli.prompt
Reflection skipLazyInitialization() with OPcache (GH-23842)
Session session_start() continuing after a failed create_sid() under strict mode; exceptions from user create_sid() handlers
SimpleXML / SOAP / SQLite SimpleXMLElement child freed while referenced; SOAP use-after-free (GH-22895) and WSDL leak; SQLite3::close() crash from a callback
Standard sha1_file() on read failure; iptcembed() JPEG corruption; proc_open() descriptor leak and three Windows-only proc_open() defects; wordwrap() trailing break; quoted-printable lowercase hex; chown() in ZTS builds; persistent stream context shutdown
Tidy / Zlib tidyNode use-after-free after reparse; inflate_init() dropping the preset dictionary for raw streams

The authoritative list, with every bug number, is the Version 8.5.12 entry on https://www.php.net/ChangeLog-8.php. The same CVE fixes also ship in the PHP 8.4.27 download for Windows.

PHP 8.5.12 changelog listing Core, BCMath and BZ2 fixes
The Core section opens with the two GHSA fixes that stop state corruption via bailout, followed by bug and OSS-Fuzz fixes. (Image: php.net)

PHP 8.5.12 upgrade problems on Windows

php -v still shows PHP 8.5.11 or older

Another PHP folder comes first on PATH, or the zip went into a different folder.

  1. Run where php in Command Prompt to list every php.exe on PATH.
  2. Extract the 8.5.12 zip into the folder listed first, or remove the stale folder from PATH.
  3. Open a new Command Prompt window and run php -v again.

phpinfo() page still shows the old version

The web server was not restarted, or it loads PHP from another folder.

  1. Restart the Apache service or recycle the IIS application pool.
  2. Check the Loaded Configuration File line in phpinfo() to see which folder the server uses.
  3. Upgrade that folder with the 8.5.12 zip and restart again.

Extensions fail to load after the upgrade

Third-party extension DLLs built for another PHP version or thread-safety type are still in the ext folder.

  1. Download the PHP 8.5 build of each third-party extension that matches your TS or NTS choice.
  2. Replace the old DLLs in the ext folder.
  3. Restart the web server and run php -v to confirm no startup warnings appear.

PHP 8.5.12 download FAQ

When was PHP 8.5.12 released?

PHP 8.5.12 was released on 21 October 2026, alongside PHP 8.4.27, 8.3.36 and 8.2.35. The Windows builds on php.net are dated 2026-Oct-21 13:48:01 UTC, and the source tarballs carry the same 21 Oct 2026 date.

Is PHP 8.5.12 a security update?

Yes. PHP 8.5.12 fixes two critical vulnerabilities, CVE-2026-109618 and CVE-2026-109619, that can allow unauthenticated remote code execution. php.net strongly encourages every PHP 8.5 user to update immediately and says no complete mitigation exists.

Where do I download PHP 8.5.12 for Windows 64 bit?

Download it from https://www.php.net/downloads.php, choosing Windows, ZIP Downloads and version 8.5. Pick VS17 x64 Thread Safe for Apache with mod_php, or VS17 x64 Non Thread Safe for IIS FastCGI and command-line use.

Does PHP 8.5.12 have a Windows installer?

No. The official PHP 8.5.12 Windows builds are zip archives that you extract into a folder. php.net also lists winget, Chocolatey and Scoop routes, and its winget command for PHP 8.5 is winget install PHP.PHP.8.5, which installs the Thread Safe build.

Does PHP 8.5.12 work on Windows 11?

Yes. PHP 8.5.12 runs on Windows 8 and Windows Server 2012 or later, which includes Windows 10 and Windows 11 on x64 hardware. The PHP manual says PHP does not currently run on Windows on ARM.

Is PHP 8.5.12 the latest version of PHP?

PHP 8.5.12 is the current stable PHP release listed on php.net as of 21 October 2026. PHP 8.6.0 is still at the release-candidate stage, and php.net says not to use those test builds in production.

Which older PHP versions got the same fix?

PHP 8.4.27, 8.3.36 and 8.2.35 carry the same two security fixes. PHP 8.1 and older no longer get updates from the PHP project, although php.net provided minimal source backports for 7.4, 8.0 and 8.1.

Should you install PHP 8.5.12 now?

Install PHP 8.5.12 today on every PHP 8.5 system that serves web requests, and restart every worker afterwards. Both fixed flaws allow unauthenticated remote code execution, php.net rates them critical, and it says updating is the only complete fix.

Philip Celasco

Philip is a Texas-based technology writer and IT administrator at Techdows.com with more than 10 years of experience creating practical content for everyday users and professionals. He specializes in web browsers, particularly Chromium-based platforms such as Google Chrome, Microsoft Edge, Brave, and Opera. Through his work as an IT administrator, Philip has hands-on experience managing devices, configuring browser policies, troubleshooting software and network issues, and helping people resolve problems that affect productivity and security. His articles are based on practical testing and real-world technical experience. He covers browser settings, extensions, performance problems, privacy controls, security features, and Windows troubleshooting. Outside work, Philip enjoys the quieter side of life in Texas and stepping away from the screen when he can. He has two kids, two cats and loves to play golf with his mother during the weekends.

Leave a Reply

Your email address will not be published. Required fields are marked *