php-version input controls which PHP version is installed on your runner. setup-php supports PHP 5.3 through 8.6 across GitHub-hosted and self-hosted runners on Ubuntu, Windows, and macOS.
Supported PHP versions
| PHP version | Stability | Release support | Runner support |
|---|---|---|---|
5.3 | Stable | End of life | GitHub-hosted |
5.4 | Stable | End of life | GitHub-hosted |
5.5 | Stable | End of life | GitHub-hosted |
5.6 | Stable | End of life | GitHub-hosted, self-hosted |
7.0 | Stable | End of life | GitHub-hosted, self-hosted |
7.1 | Stable | End of life | GitHub-hosted, self-hosted |
7.2 | Stable | End of life | GitHub-hosted, self-hosted |
7.3 | Stable | End of life | GitHub-hosted, self-hosted |
7.4 | Stable | End of life | GitHub-hosted, self-hosted |
8.0 | Stable | End of life | GitHub-hosted, self-hosted |
8.1 | Stable | End of life | GitHub-hosted, self-hosted |
8.2 | Stable | Security fixes only | GitHub-hosted, self-hosted |
8.3 | Stable | Security fixes only | GitHub-hosted, self-hosted |
8.4 | Stable | Active | GitHub-hosted, self-hosted |
8.5 | Stable | Active | GitHub-hosted, self-hosted |
8.6 | Nightly | In development | GitHub-hosted, self-hosted |
Specifying
8.6 installs a nightly build of PHP 8.6.0-dev from the master branch of PHP. See the nightly build section below for details.Platform support
GitHub-hosted runners
| Virtual environment | Architecture | YAML workflow label | Pre-installed PHP |
|---|---|---|---|
| Ubuntu 24.04 | x86_64 | ubuntu-latest or ubuntu-24.04 | PHP 8.3 |
| Ubuntu 22.04 | x86_64 | ubuntu-22.04 | PHP 8.1 |
| Ubuntu 24.04 | aarch64 | ubuntu-24.04-arm | PHP 8.3 |
| Ubuntu 22.04 | aarch64 | ubuntu-22.04-arm | PHP 8.1 |
| Windows Server 2025 | x64 | windows-2025 | PHP 8.5 |
| Windows Server 2022 | x64 | windows-latest or windows-2022 | PHP 8.5 |
| macOS Tahoe 26.x | arm64 | macos-26 | — |
| macOS Sequoia 15.x | arm64 | macos-latest or macos-15 | — |
| macOS Sonoma 14.x | arm64 | macos-14 | — |
| macOS Tahoe 26.x | x86_64 | macos-26-intel | PHP 8.5 |
| macOS Sequoia 15.x | x86_64 | macos-15-intel | PHP 8.5 |
PHP 5.3–5.5 are only available on GitHub-hosted runners, not self-hosted runners. PHP 5.6–8.6 are supported on both. On GitHub-hosted macOS ARM64 runners (e.g.
macos-14), only PHP 5.6 and above are supported.Self-hosted runners
| Host OS / virtual environment | YAML workflow label |
|---|---|
| Ubuntu 24.04 | self-hosted or Linux |
| Ubuntu 22.04 | self-hosted or Linux |
| Debian 13 | self-hosted or Linux |
| Debian 12 | self-hosted or Linux |
| Debian 11 | self-hosted or Linux |
| Windows 7 and newer | self-hosted or Windows |
| Windows Server 2012 R2 and newer | self-hosted or Windows |
| macOS Tahoe 26.x x86_64/arm64 | self-hosted or macOS |
| macOS Sequoia 15.x x86_64/arm64 | self-hosted or macOS |
| macOS Sonoma 14.x x86_64/arm64 | self-hosted or macOS |
php-version input options
The php-version input accepts several formats:
- Specific version
- lowest / highest
- nightly
- pre-installed
- d.x format
- Matrix
Provide a version string such as
'8.5' or '8.4':Auto-detection from project files
Whenphp-version is not specified, setup-php looks for the PHP version in the following order:
- The
php-version-fileinput (if provided) - A
composer.lockfile — readsplatform-overrides.php - A
composer.jsonfile — readsconfig.platform.php
php-version-file input
Specify a file that contains the PHP version to use. By default, setup-php looks for a .php-version file:
8.5) or follow the asdf .tool-versions format. If the default .php-version file is not found and php-version-file is not set, the latest stable PHP version is installed.
Special builds
Nightly build
Specifying8.6 (or nightly) installs a nightly build of PHP 8.6.0-dev compiled from the master branch:
Debug build
Production release builds without debugging symbols are installed by default. Set thedebug environment variable to true to install a build with debugging symbols for PHP 5.6 and above:
- Linux — debug info files in
/usr/lib/debug/.build-id, matching thebuild-idin the ELF section of PHP binaries - Windows —
.pdbfiles in the PHP installation directory - macOS — debug symbols compiled directly into the binaries
Thread-safe build
Non-thread-safe (NTS) PHP is installed by default. Use thephpts environment variable to select a thread-safe (TS/ZTS) build:
JIT configuration
PHP 8.0 and above support Just-in-Time (JIT) compilation. To enable JIT:- Enable opcache in CLI mode with
opcache.enable_cli=1 - Set
coverage: none— JIT conflicts with Xdebug, PCOV, and other extensions that overridezend_execute_ex - Optionally tune
opcache.jitandopcache.jit_buffer_size
opcache.jit=1235 and opcache.jit_buffer_size=256M (128M on ARM).
- Tracing mode
- Function mode
Enable JIT in tracing mode with a 64 MB buffer:
Refer to the official PHP opcache documentation for a full list of JIT directives and their values.