About this project

PHP is a general-purpose scripting language oriented toward web development. This repository, php/php-src, holds the official source code of the PHP interpreter and is distributed under the Modified BSD License (BSD-3-Clause). The README points to the official manual at php.net/docs for documentation. For users who prefer not to build from source, prebuilt packages and binaries are available: Windows binaries come from windows.php.net, and installation guidance for other systems is covered in the manual's installation chapter. Building from source requires autoconf, bison, and re2c for a minimal build; a default build additionally needs libxml2 and libsqlite3. The README lists package installation commands for Ubuntu, Fedora, macOS via Homebrew, and macOS via MacPorts. The build flow is: run ./buildconf to generate configure, run ./configure (with --enable-debug recommended for development), then make -j4, with the job count ideally matching available cores as reported by nproc. Windows users are directed to a separate step-by-step build guide on the PHP wiki. Testing is handled by an extensive bundled test suite run via make test after a successful compile. Tests run in parallel by default using up to 10 detected logical processors; the worker count can be overridden with -jN in TEST_PHP_ARGS or TESTS, and specific directories can be targeted, for example make TESTS=tests/lang/ test. The qa.php.net site offers further testing and quality assurance information. After a successful build and test, make install installs PHP, possibly requiring superuser permissions depending on prefix and permissions. Extensions add functionality beyond the many essential bundled extensions. Additional extensions are listed on the PIE Extensions page on Packagist and can be installed with PIE, the PHP Installer for Extensions, or with the deprecated PECL. Contributions are welcome via forking the repository and opening pull requests. Discussion happens on GitHub and can also be relayed to the internals@lists.php.net developer mailing list. New features require an accepted RFC, with details in the wiki's RFC and voting pages; bug fixes do not require an RFC. Commit messages should reference GitHub issues as GH-NNNNNN or old bug tracker tickets as #NNNNNN. The README links to further contributor documents: CONTRIBUTING.md, CODING_STANDARDS.md, internal documentation, mailing list rules, and the release process. A credits page lists contributors.