2019-03-07 08:57:53 +08:00
|
|
|
<div align="center">
|
|
|
|
<a href="https://php.net">
|
|
|
|
<img
|
|
|
|
alt="PHP"
|
2019-04-21 09:16:11 +08:00
|
|
|
src="https://www.php.net/images/logos/new-php-logo.svg"
|
2019-03-07 08:57:53 +08:00
|
|
|
width="150">
|
|
|
|
</a>
|
|
|
|
</div>
|
2012-06-04 00:49:47 +08:00
|
|
|
|
2019-03-07 08:57:53 +08:00
|
|
|
# The PHP Interpreter
|
2012-06-04 00:49:47 +08:00
|
|
|
|
2019-03-07 08:57:53 +08:00
|
|
|
PHP is a popular general-purpose scripting language that is especially suited to
|
|
|
|
web development. Fast, flexible and pragmatic, PHP powers everything from your
|
2019-10-01 20:42:18 +08:00
|
|
|
blog to the most popular websites in the world. PHP is distributed under the
|
|
|
|
[PHP License v3.01](LICENSE).
|
2019-03-07 08:57:53 +08:00
|
|
|
|
2022-07-11 20:14:39 +08:00
|
|
|
[![Push](https://github.com/php/php-src/actions/workflows/push.yml/badge.svg)](https://github.com/php/php-src/actions/workflows/push.yml)
|
2022-07-11 05:09:31 +08:00
|
|
|
[![Build status](https://travis-ci.com/php/php-src.svg?branch=master)](https://travis-ci.com/github/php/php-src)
|
2019-06-09 19:40:04 +08:00
|
|
|
[![Build Status](https://dev.azure.com/phpazuredevops/php/_apis/build/status/php.php-src?branchName=master)](https://dev.azure.com/phpazuredevops/php/_build/latest?definitionId=1&branchName=master)
|
2019-11-22 14:03:01 +08:00
|
|
|
[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/php.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:php)
|
2012-06-04 00:49:47 +08:00
|
|
|
|
2019-03-07 08:57:53 +08:00
|
|
|
## Documentation
|
|
|
|
|
|
|
|
The PHP manual is available at [php.net/docs](https://php.net/docs).
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
### Prebuilt packages and binaries
|
|
|
|
|
|
|
|
Prebuilt packages and binaries can be used to get up and running fast with PHP.
|
|
|
|
|
|
|
|
For Windows, the PHP binaries can be obtained from
|
|
|
|
[windows.php.net](https://windows.php.net). After extracting the archive the
|
|
|
|
`*.exe` files are ready to use.
|
|
|
|
|
|
|
|
For other systems, see the [installation chapter](https://php.net/install).
|
|
|
|
|
2019-03-31 15:43:53 +08:00
|
|
|
### Building PHP source code
|
2019-03-07 08:57:53 +08:00
|
|
|
|
2019-03-31 15:43:53 +08:00
|
|
|
*For Windows, see [Build your own PHP on Windows](https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2).*
|
|
|
|
|
2020-03-18 23:29:09 +08:00
|
|
|
For a minimal PHP build from Git, you will need autoconf, bison, and re2c. For
|
2021-01-15 11:50:32 +08:00
|
|
|
a default build, you will additionally need libxml2 and libsqlite3.
|
|
|
|
|
|
|
|
On Ubuntu, you can install these using:
|
2019-03-07 08:57:53 +08:00
|
|
|
|
2020-05-10 03:36:11 +08:00
|
|
|
sudo apt install -y pkg-config build-essential autoconf bison re2c \
|
2020-03-18 23:29:09 +08:00
|
|
|
libxml2-dev libsqlite3-dev
|
|
|
|
|
2021-01-15 11:50:32 +08:00
|
|
|
On Fedora, you can install these using:
|
|
|
|
|
|
|
|
sudo dnf install re2c bison autoconf make libtool ccache libxml2-devel sqlite-devel
|
|
|
|
|
2020-03-18 23:29:09 +08:00
|
|
|
Generate configure:
|
2019-03-31 15:43:53 +08:00
|
|
|
|
2020-03-18 23:29:09 +08:00
|
|
|
./buildconf
|
2019-03-31 15:43:53 +08:00
|
|
|
|
2020-03-18 23:29:09 +08:00
|
|
|
Configure your build. `--enable-debug` is recommended for development, see
|
|
|
|
`./configure --help` for a full list of options.
|
2019-03-31 15:43:53 +08:00
|
|
|
|
2020-03-18 23:29:09 +08:00
|
|
|
# For development
|
|
|
|
./configure --enable-debug
|
|
|
|
# For production
|
|
|
|
./configure
|
2019-03-31 15:43:53 +08:00
|
|
|
|
2020-03-18 23:29:09 +08:00
|
|
|
Build PHP. To speed up the build, specify the maximum number of jobs using `-j`:
|
2019-03-31 15:43:53 +08:00
|
|
|
|
|
|
|
make -j4
|
2019-04-21 09:16:11 +08:00
|
|
|
|
2020-03-18 23:29:09 +08:00
|
|
|
The number of jobs should usually match the number of available cores, which
|
|
|
|
can be determined using `nproc`.
|
2019-03-31 15:43:53 +08:00
|
|
|
|
|
|
|
## Testing PHP source code
|
|
|
|
|
2019-04-21 21:33:20 +08:00
|
|
|
PHP ships with an extensive test suite, the command `make test` is used after
|
|
|
|
successful compilation of the sources to run this test suite.
|
2012-06-04 00:49:47 +08:00
|
|
|
|
2019-04-21 21:33:20 +08:00
|
|
|
It is possible to run tests using multiple cores by setting `-jN` in
|
|
|
|
`TEST_PHP_ARGS`:
|
2012-06-04 00:49:47 +08:00
|
|
|
|
2019-03-31 15:46:36 +08:00
|
|
|
make TEST_PHP_ARGS=-j4 test
|
2019-04-21 09:16:11 +08:00
|
|
|
|
2019-04-21 21:33:20 +08:00
|
|
|
Shall run `make test` with a maximum of 4 concurrent jobs: Generally the maximum
|
|
|
|
number of jobs should not exceed the number of cores available.
|
2019-03-07 08:57:53 +08:00
|
|
|
|
2019-04-21 21:33:20 +08:00
|
|
|
The [qa.php.net](https://qa.php.net) site provides more detailed info about
|
|
|
|
testing and quality assurance.
|
2019-03-31 15:43:53 +08:00
|
|
|
|
|
|
|
## Installing PHP built from source
|
|
|
|
|
|
|
|
After a successful build (and test), PHP may be installed with:
|
|
|
|
|
|
|
|
make install
|
2019-04-21 09:16:11 +08:00
|
|
|
|
2019-04-21 21:33:20 +08:00
|
|
|
Depending on your permissions and prefix, `make install` may need super user
|
|
|
|
permissions.
|
2019-03-07 08:57:53 +08:00
|
|
|
|
|
|
|
## PHP extensions
|
|
|
|
|
|
|
|
Extensions provide additional functionality on top of PHP. PHP consists of many
|
|
|
|
essential bundled extensions. Additional extensions can be found in the PHP
|
|
|
|
Extension Community Library - [PECL](https://pecl.php.net).
|
|
|
|
|
|
|
|
## Contributing
|
|
|
|
|
|
|
|
The PHP source code is located in the Git repository at
|
2022-01-04 20:08:33 +08:00
|
|
|
[github.com/php/php-src](https://github.com/php/php-src). Contributions are most
|
|
|
|
welcome by forking the repository and sending a pull request.
|
2019-03-07 08:57:53 +08:00
|
|
|
|
|
|
|
Discussions are done on GitHub, but depending on the topic can also be relayed
|
|
|
|
to the official PHP developer mailing list internals@lists.php.net.
|
|
|
|
|
|
|
|
New features require an RFC and must be accepted by the developers. See
|
|
|
|
[Request for comments - RFC](https://wiki.php.net/rfc) and
|
|
|
|
[Voting on PHP features](https://wiki.php.net/rfc/voting) for more information
|
|
|
|
on the process.
|
|
|
|
|
2022-01-04 20:08:33 +08:00
|
|
|
Bug fixes don't require an RFC. If the bug has a GitHub issue, reference it in
|
|
|
|
the commit message using `GH-NNNNNN`. Use `#NNNNNN` for tickets in the old
|
|
|
|
[bugs.php.net](https://bugs.php.net) bug tracker.
|
2012-06-04 00:49:47 +08:00
|
|
|
|
2022-01-04 20:08:33 +08:00
|
|
|
Fix GH-7815: php_uname doesn't recognise latest Windows versions
|
2012-06-04 00:49:47 +08:00
|
|
|
Fix #55371: get_magic_quotes_gpc() throws deprecation warning
|
|
|
|
|
2022-01-04 20:08:33 +08:00
|
|
|
See [Git workflow](https://wiki.php.net/vcs/gitworkflow) for details on how pull
|
|
|
|
requests are merged.
|
2013-10-28 07:40:37 +08:00
|
|
|
|
2019-03-07 08:57:53 +08:00
|
|
|
### Guidelines for contributors
|
2013-10-28 07:40:37 +08:00
|
|
|
|
2019-03-07 08:57:53 +08:00
|
|
|
See further documents in the repository for more information on how to
|
|
|
|
contribute:
|
|
|
|
|
|
|
|
- [Contributing to PHP](/CONTRIBUTING.md)
|
2019-05-19 03:39:19 +08:00
|
|
|
- [PHP coding standards](/CODING_STANDARDS.md)
|
2021-10-04 20:42:23 +08:00
|
|
|
- [Mailing list rules](/docs/mailinglist-rules.md)
|
2019-03-28 03:51:45 +08:00
|
|
|
- [PHP release process](/docs/release-process.md)
|
2018-10-07 10:31:59 +08:00
|
|
|
|
2019-03-24 00:06:56 +08:00
|
|
|
## Credits
|
|
|
|
|
|
|
|
For the list of people who've put work into PHP, please see the
|
|
|
|
[PHP credits page](https://php.net/credits.php).
|