PHP: a general-purpose scripting language interpreter for web development
A PHP interpreter for web developers that supports both prebuilt packages and source builds with testing.
GitHub php/php-src Updated 2026-10-23 Branch master Stars 41.2K Forks 8.3K
C PHP Web development Interpreter BSD-3-Clause Ubuntu/Fedora/macOS

🧭 Decision Guide

Try it if you

  • You need a general-purpose scripting language for web development and want to use the PHP ecosystem.
    The opening of the README describes PHP as a general-purpose scripting language especially suited to web development.
  • You need to debug or modify the PHP source and are prepared to build with --enable-debug.
    Installation > Building PHP source code states that development builds can use ./configure --enable-debug.
  • You need to run the full PHP source test suite or test only the tests/lang/ directory.
    Testing PHP source code provides make test and make TESTS=tests/lang/ test.

Skip it if you

  • Your environment cannot install autoconf, bison, re2c, libxml2, or libsqlite3 while you still plan to build from source.
    Building PHP source code lists these tools and the development libraries needed for a default build.
  • You cannot accept that installation may require superuser permissions.
    Installing PHP built from source explicitly says that make install may require superuser permissions.
  • You only need to start PHP quickly and do not want to compile source code.
    Installation > Prebuilt packages and binaries says prebuilt packages and binaries can get PHP running fast.

Requirements

  • A minimal source build requires autoconf, bison, and re2c.
  • A default build additionally requires libxml2 and libsqlite3.
  • The Ubuntu example uses pkg-config, build-essential, autoconf, bison, re2c, libxml2-dev, and libsqlite3-dev.
  • The Fedora example uses re2c, bison, autoconf, make, ccache, libxml2-devel, and sqlite-devel.
  • The macOS example uses Homebrew to install autoconf, bison, re2c, libiconv, libxml2, and sqlite.
  • The build flow includes ./buildconf, ./configure, and make -j4.
  • Testing requires a successful source compilation first; the README specifies make test.

First step (verbatim from README)

sudo apt install -y pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev

Watch out

  • Set the parallelism in make -j4 according to available CPU cores; the README mentions using nproc to determine the core count.
    The make -j4 explanation in Building PHP source code.
  • make test runs in parallel by default and may use up to 10 detected logical processors.
    Testing PHP source code.
  • To limit the test scope, use the TEST_PHP_ARGS or TESTS variables, such as tests/lang/.
    Testing PHP source code.
  • New feature contributions require an RFC accepted by the developers, while ordinary bug fixes do not require an RFC.
    The RFC and Bug fixes sections under Contributing.

Alternatives

  • Prebuilt PHP packages and binaries:Better when you need to run PHP quickly or do not want to prepare source-build dependencies.
    Installation > Prebuilt packages and binaries
  • PIE PHP Installer for Extensions:Better when you need to install additional PHP extensions mentioned in the README rather than modify the interpreter source.
    PHP extensions
  • PECL:An option when you need the PHP Extension Community Library path, although the README marks it as deprecated.
    PHP extensions

Not stated in the README

  • The README does not specify the operating system versions supported by PHP 8.5.12.
  • The README provides no performance data for PHP 8.5.12 compared with other versions.
  • The README provides no compatibility matrix for PHP extensions and PHP 8.5.12.
  • The README does not specify the minimum compiler versions required for source builds.
  • The README does not specify the exact versions, architectures, or release-channel scope of the prebuilt binaries.
  • The materials do not explain the specific reason for the 287 new stars on 2026-10-23.

💡 Deep Analysis

6
No I am developing PHP websites and Web APIs on Windows and want to run PHP 8.5.12 quickly without installing Autoconf, Bison, re2c, or compiling C source code. Is php-src suitable for me?
For: A PHP application developer building dynamic websites and Web APIs with prebuilt PHP binaries on Windows

No, because your goal is to run PHP quickly, while php-src is the interpreter source repository rather than a ready-to-use application package.

  • The README explicitly recommends prebuilt packages and binaries for getting started quickly; on Windows, binaries are available from windows.php.net and the extracted *.exe files are ready to use.
  • A Git source build requires at least autoconf, bison, and re2c; the default build additionally requires libxml2 and libsqlite3. That conflicts with your constraint of avoiding a compiler toolchain.
  • Project data identifies C as the main language and lists php-8.5.12 as the latest release, showing that this repository focuses on runtime implementation rather than websites or business libraries.
  • Even after installation, database drivers, a web server, and framework-level features are not supplied as a complete application stack by the core repository.
  • Installation > Prebuilt packages and binaries: "Prebuilt packages and binaries can be used to get up and running fast with PHP."
  • Installation > Building PHP source code: "For a minimal PHP build from Git, you will need autoconf, bison, and re2c."
  • Project data: main_language is C; latest_release is php-8.5.12
Not stated in the README:The README does not specify the support matrix for CPU architectures, thread models, or web-server combinations of Windows binaries.;The README does not state whether php-8.5.12 is compatible with your existing application dependencies.
Yes I maintain CI for the PHP source and need to run the full suite, then only `tests/lang/`, while limiting parallel workers to four. Does the README directly support this testing constraint?
For: A test engineer maintaining continuous integration for PHP language behavior who needs parallel full-suite execution and tests/lang/ filtering

Yes, because the README directly provides commands for the full suite, directory filtering, and parallelism control, matching each part of your CI constraint.

  • After a successful compilation, make test runs PHP’s extensive built-in test suite and can serve as the full-suite stage.
  • Tests run in parallel by default, using up to 10 detected logical processors; TEST_PHP_ARGS=-j4 limits the parallel worker count to four.
  • The README also supports make TESTS=tests/lang/ test, which directly restricts execution to the language-behavior directory.
  • Sequential execution is available with -j1 if the CI job requires it. However, the README does not describe result formats, retry behavior, platform isolation, or how external dependencies affect test outcomes; those aspects remain part of the CI design.
  • Testing PHP source code: "the command `make test` is used after successful compilation"
  • Testing PHP source code: "Tests run in parallel by default, using up to 10 detected logical processors."
  • Testing PHP source code: `make TEST_PHP_ARGS=-j4 test`
  • Testing PHP source code: `make TESTS=tests/lang/ test`
make TEST_PHP_ARGS=-j4 test
Not stated in the README:The README does not specify exit codes, log formats, or test-report artifacts for failed CI tests.;The README does not state whether `tests/lang/` covers all interpreter, extension, and platform behaviors relevant to your CI.
Yes I mainly use C to modify the PHP interpreter or memory-management code. I need a debug-enabled source build and want to run php-src tests after changes. Does the README workflow fit this contribution work?
For: A low-level developer contributing to the PHP runtime with C, Autoconf, and Make who needs to diagnose interpreter or memory-management issues

Yes, because the project provides a debug-oriented --enable-debug build and connects source compilation, testing, and contribution workflows.

  • Project data identifies C as the main language, with far more code than PHP, C++, Shell, or M4, which matches work on the interpreter core.
  • The README explicitly recommends --enable-debug for development and documents the ./buildconf, configure, and make sequence.
  • After compilation, make test runs the test suite. Tests run in parallel by default, and TESTS can limit execution to a directory such as tests/lang/ for language behavior.
  • New language features require an RFC accepted by the developers, while bug fixes do not require an RFC. Runtime fixes and language-design changes therefore follow different contribution paths.
  • Project data: main_language is C; language_distribution lists 82232724 for C
  • Installation > Building PHP source code: "`--enable-debug` is recommended for development"
  • Testing PHP source code: "PHP ships with an extensive test suite, the command `make test` is used"
  • Contributing: "New features require an RFC"; "Bug fixes don't require an RFC."
./buildconf
Not stated in the README:The README does not quantify the performance difference between debug and production builds.;The README does not provide concrete instructions for memory debuggers, breakpoint debuggers, or internal runtime modules.
Yes I maintain a PHP production image on Ubuntu and need to build the default production version from php-src with libxml2 and SQLite. Does this source project satisfy my build constraints?
For: A systems engineer maintaining a PHP production runtime and container image on Ubuntu who needs a source-built production build

Yes, because the README provides Ubuntu dependencies, production configuration, and build steps, including the libraries needed for the default build with libxml2 and SQLite.

  • The Ubuntu dependency command includes pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev, matching the target platform and extension requirements.
  • The README identifies ./configure as the production configuration and reserves ./configure --enable-debug for development, allowing the runtime image and debug build to be separated.
  • The build supports make -j4, and the README says the job count should usually match the available CPU cores.
  • After testing, make install can install the result, although permissions and the installation prefix may require superuser access. The README does not automatically resolve conflicts with an existing PHP binary or extension path in the image.
  • Installation > Building PHP source code: the Ubuntu command includes `sudo apt install -y pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev`
  • Installation > Building PHP source code: "# For production\n./configure"
  • Installation > Building PHP source code: "make -j4"
  • Installing PHP built from source: "Depending on your permissions and prefix, `make install` may need superuser permissions."
sudo apt install -y pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev
Not stated in the README:The README does not provide a complete distribution compatibility matrix or recommended compiler versions for php-8.5.12.;The README does not specify which extensions should be enabled in a production image or provide a container example.
Yes I maintain PHP distribution packages for Linux, Windows, and macOS and need a consistent source runtime across platforms. Is php-src suitable as a common upstream?
For: A distribution engineer maintaining PHP packages for Linux, Windows, and macOS who needs to verify cross-platform source builds

Yes, but you will need separate platform build paths because the README provides entry points for Windows, Linux, and macOS without promising identical dependencies or configurations across them.

  • The README links to a dedicated Windows build guide, provides Ubuntu and Fedora dependency commands for Linux, and documents Homebrew and MacPorts options for macOS.
  • The core is implemented primarily in C, while Autoconf and Make provide configurable builds that can adapt to platforms, libraries, and debug requirements.
  • The project supports both prebuilt binaries and source builds, allowing a distribution to use the source as upstream while delivering compiled packages to ordinary users.
  • make test can be included in each platform’s validation process, but the README does not list the compiler matrix, platform-specific differences, or every extension combination. Cross-platform consistency therefore cannot be guaranteed by the core source alone.
  • Installation > Building PHP source code: "For Windows, see Build your own PHP on Windows"
  • Installation > Building PHP source code: dependency installation methods are provided for Ubuntu, Fedora, and macOS
  • Installation > Prebuilt packages and binaries: "Prebuilt packages and binaries can be used to get up and running fast with PHP."
  • Project insight: Autoconf and optional configure parameters adapt to operating systems, library versions, and debugging needs
./buildconf
Not stated in the README:The README does not provide a compiler, architecture, or extension compatibility matrix for Windows, Linux, and macOS.;The README does not state whether binaries produced on different platforms have identical default configurations and ABI behavior.
It depends I develop PHP extensions that depend on libxml2 and SQLite on macOS and need to build PHP from source and validate extension behavior. Does php-src cover my platform and dependency constraints?
For: An extension developer adding XML and SQLite capabilities to PHP who builds the runtime from source on macOS

It depends, because the README covers macOS source dependencies and PHP’s extension model, but it does not guarantee that every third-party extension will work with every configuration.

  • On macOS, Homebrew can install autoconf bison re2c libiconv libxml2 sqlite, or the corresponding dependencies can be installed with MacPorts, satisfying the documented source-build prerequisites.
  • The README says extensions provide additional functionality on top of PHP and points to the PIE Extensions list for additional extensions. This supports an extension-based design, but does not mean every extension ships in the core repository.
  • The test suite runs with make test, and TESTS can select a directory, allowing targeted validation where tests exist.
  • The README does not detail the API compatibility, build flags, test directories, or third-party library versions for a particular extension. Those details require the extension’s documentation or internal documentation.
  • Installation > Building PHP source code: the macOS Homebrew command is `brew install autoconf bison re2c libiconv libxml2 sqlite`
  • PHP extensions: "Extensions provide additional functionality on top of PHP."
  • PHP extensions: "Additional extensions can be found on the PIE Extensions list"
  • Testing PHP source code: `make TESTS=tests/lang/ test` demonstrates directory-scoped testing
brew install autoconf bison re2c libiconv libxml2 sqlite
Not stated in the README:The README does not state the target extension's PHP ABI, macOS version support, or Apple Silicon/Intel architecture support.;The README does not explain how to integrate a custom extension into the php-src build and test workflow.

✨ Highlights

  • The README covers the full source build, test, and installation workflow
  • Supports make test and directory-level selection through TESTS
  • Provides extension installation paths through PIE and PECL
  • The project has 41,161 stars and 8,311 forks

🔧 Engineering

  • The PHP interpreter targets general-purpose scripting and web development
  • The README provides ./buildconf, ./configure, and make -j4 build commands
  • Bundled extensions can be extended through the PIE or PECL ecosystem

⚠️ Risks

  • Source builds require dependencies such as autoconf, bison, and re2c
  • Tests run in parallel by default using up to 10 logical processors
  • make install may require superuser permissions depending on permissions and prefix

👥 For who?

  • PHP application developers who need a scripting language for web development
  • PHP contributors who need to debug or modify the C source code
  • Systems developers who need to compile PHP and run make test