mirror of
https://github.com/php/php-src.git
synced 2024-12-28 11:20:29 +08:00
7e445ef3b1
The Autoconf macro AC_CONFIG_AUX_DIR can set the location of the
auxiliary build tools such as config.guess, config.sub, and bundled
libtool scripts and moves these bundled files from the root directory
to the build subdirectory.
Additionally some changes in this context or as a part of obsoletion:
- The LT_TARGETS variable in build/build2.mk file was once used as a part
of the Automake step. It's not used anymore and has been refactored to
separate makedist script directly.
- ltconfig is not used anymore since libtool 1.4+
cf8d1563c2
- phpize file locations for the config.guess, config.sub, and ltmain.sh
has been refactored accordingly.
178 lines
8.3 KiB
Markdown
178 lines
8.3 KiB
Markdown
# Contributing to PHP
|
|
|
|
Anybody who programs in PHP can be a contributing member of the community that
|
|
develops and deploys it; the task of deploying PHP, documentation and
|
|
associated websites is a never ending one. With every release, or release
|
|
candidate comes a wave of work, which takes a lot of organization and
|
|
co-ordination.
|
|
|
|
## Pull requests
|
|
|
|
PHP welcomes pull requests to [add tests](#writing-tests), fix bugs and to
|
|
implement RFCs. Please be sure to include tests as appropriate!
|
|
|
|
If you are fixing a bug, then please submit your PR against the lowest actively
|
|
supported branch of PHP that the bug affects (only green branches on
|
|
[the supported version page](http://php.net/supported-versions.php) are supported).
|
|
For example, at the time of writing, the lowest supported version is PHP 7.2,
|
|
which corresponds to the `PHP-7.2` branch in Git. Please also make sure you add
|
|
a link to the PR in the bug on [the bug tracker](https://bugs.php.net/).
|
|
|
|
Pull requests implementing RFCs should be submitted against `master`.
|
|
|
|
Pull requests should *never* be submitted against `PHP-x.y.z` branches, as
|
|
these are only used for release management.
|
|
|
|
If your pull request exhibits conflicts with the base branch, please resolve them
|
|
by using `git rebase` instead of `git merge`.
|
|
|
|
## Filing bugs
|
|
|
|
Bugs can be filed on the [PHP bug tracker](https://bugs.php.net/). If this is
|
|
the first time you've filed a bug, we suggest reading the
|
|
[guide to reporting a bug](https://bugs.php.net/how-to-report.php).
|
|
|
|
Where possible, please include a self-contained reproduction case!
|
|
|
|
## Feature requests
|
|
|
|
Feature requests are generally submitted in the form of
|
|
[Requests for Comment](https://wiki.php.net/rfc/howto), ideally accompanied by
|
|
[pull requests](#pull-requests). You can find the extremely large list of RFCs
|
|
that have been previously considered on the
|
|
[PHP Wiki](https://wiki.php.net/rfc).
|
|
|
|
You may want to read
|
|
[The Mysterious PHP RFC Process](https://blogs.oracle.com/opal/entry/the_mysterious_php_rfc_process)
|
|
for additional notes on the best way to approach submitting an RFC.
|
|
|
|
## Writing tests
|
|
|
|
We love getting new tests! PHP is a huge project and improving code coverage is
|
|
a huge win for every PHP user.
|
|
|
|
[Our QA site includes a page detailing how to write test cases.](http://qa.php.net/write-test.php)
|
|
|
|
## Writing documentation
|
|
|
|
There are two ways to contribute to the PHP manual. You can edit the manual and
|
|
send patches anonymously via [the online editor](https://edit.php.net/), or you
|
|
can check the XML source out from Subversion and edit that and build it
|
|
[per the instructions on the documentation site](http://doc.php.net/tutorial/).
|
|
Patches created that way should be sent to the
|
|
[documentation mailing list](mailto:phpdoc@lists.php.net).
|
|
|
|
## Getting help
|
|
|
|
If you are having trouble contributing to PHP, or just want to talk to a human
|
|
about what you're working on, you can contact us via the
|
|
[internals mailing list](mailto:internals@lists.php.net), or the
|
|
[documentation mailing list](mailto:phpdoc@lists.php.net) for documentation
|
|
issues.
|
|
|
|
Although not a formal channel, you can also find a number of core developers on
|
|
the #php.pecl channel on [EFnet](http://www.efnet.org/). Similarly, many
|
|
documentation writers can be found on #php.doc.
|
|
|
|
## PHP source code directory structure
|
|
|
|
PHP source code also includes several files generated during development and
|
|
several parts where maintenance is happening upstream in their respective
|
|
locations.
|
|
|
|
```bash
|
|
<php-src>/
|
|
├─ .git/ # Git configuration and source directory
|
|
└─ TSRM/ # Thread Safe Resource Manager
|
|
└─ m4/ # https://github.com/autoconf-archive/autoconf-archive
|
|
└─ ax_func_which_gethostbyname_r.m4
|
|
└─ ...
|
|
└─ Zend/ # Zend Engine
|
|
├─ zend_vm_execute.h # Generated by `Zend/zend_vm_gen.php`
|
|
├─ zend_vm_opcodes.c # Generated by `Zend/zend_vm_gen.php`
|
|
├─ zend_vm_opcodes.h # Generated by `Zend/zend_vm_gen.php`
|
|
└─ ...
|
|
├─ appveyor/ # Appveyor CI service files
|
|
└─ build/ # *nix build system files
|
|
├─ ax_check_compile_flag.m4 # https://github.com/autoconf-archive/autoconf-archive
|
|
├─ ax_gcc_func_attribute.m4 # https://github.com/autoconf-archive/autoconf-archive
|
|
├─ config.guess # https://git.savannah.gnu.org/cgit/config.git
|
|
├─ config.sub # https://git.savannah.gnu.org/cgit/config.git
|
|
├─ libtool.m4 # https://git.savannah.gnu.org/cgit/libtool.git
|
|
├─ ltmain.sh # https://git.savannah.gnu.org/cgit/libtool.git
|
|
├─ shtool # https://www.gnu.org/software/shtool/
|
|
└─ ...
|
|
└─ ext/ # PHP core extensions
|
|
└─ bcmath/
|
|
├─ libbcmath/ # Forked and maintained in php-src
|
|
└─ ...
|
|
└─ curl/
|
|
├─ sync-constants.php # The curl symbols checker
|
|
└─ ...
|
|
└─ date/
|
|
└─ lib/ # Bundled datetime library https://github.com/derickr/timelib
|
|
├─ parse_date.c # Generated by re2c 0.15.3
|
|
├─ parse_iso_intervals.c # Generated by re2c 0.15.3
|
|
└─ ...
|
|
└─ ...
|
|
└─ fileinfo/
|
|
├─ libmagic/ # Modified libmagic https://github.com/file/file
|
|
├─ data_file.c # Generated by `ext/fileinfo/create_data_file.php`
|
|
├─ libmagic.patch # Modifications patch from upstream libmagic
|
|
├─ magicdata.patch # Modifications patch from upstream libmagic
|
|
└─ ...
|
|
└─ gd/
|
|
├─ libgd/ # Bundled and modified GD library https://github.com/libgd/libgd
|
|
└─ ...
|
|
└─ mbstring/
|
|
├─ libmbfl/ # Forked and maintained in php-src
|
|
├─ oniguruma/ # Bundled https://github.com/kkos/oniguruma
|
|
├─ oniguruma.patch # Modifications patch from upstream oniguruma
|
|
├─ unicode_data.h # Generated by `ext/mbstring/ucgendat/ucgendat.php`
|
|
└─ ...
|
|
└─ pcre/
|
|
├─ pcre2lib/ # https://www.pcre.org/
|
|
└─ ...
|
|
└─ pdo_mysql/
|
|
├─ php_pdo_mysql_sqlstate.h # Generated by `ext/pdo_mysql/get_error_codes.php`
|
|
└─ ...
|
|
└─ skeleton/ # Skeleton for developing new extensions with `ext/ext_skel.php`
|
|
└─ ...
|
|
└─ standard/
|
|
└─ html_tables/
|
|
├─ mappings/ # https://www.unicode.org/Public/MAPPINGS/
|
|
└─ ...
|
|
├─ credits_ext.h # Generated by `scripts/dev/credits`
|
|
├─ credits_sapi.h # Generated by `scripts/dev/credits`
|
|
├─ html_tables.h # Generated by `ext/standard/html_tables/html_table_gen.php`
|
|
└─ ...
|
|
└─ tokenizer/
|
|
├─ tokenizer_data.c # Generated by `ext/tokenizer/tokenizer_data_gen.sh`
|
|
└─ ...
|
|
└─ xmlrpc/
|
|
├─ libxmlrpc/ # Forked and maintained in php-src
|
|
└─ ...
|
|
└─ zend_test # For testing internal APIs. Not needed for regular builds.
|
|
└─ ...
|
|
└─ zip/ # Bundled https://github.com/pierrejoye/php_zip
|
|
└─ ...
|
|
└─ ...
|
|
└─ main/ # Binding that ties extensions, SAPIs, and engine together
|
|
├─ streams/ # Streams layer subsystem
|
|
├─ php_version.h # Generated by release managers using `configure`
|
|
└─ ...
|
|
├─ pear/ # PEAR installation
|
|
└─ sapi/ # PHP SAPI modules
|
|
└─ cli/
|
|
├─ mime_type_map.h # Generated by `sapi/cli/generate_mime_type_map.php`
|
|
└─ ...
|
|
└─ ...
|
|
├─ scripts/ # php-config, phpize and internal development scripts
|
|
├─ tests/ # Core features tests
|
|
├─ travis/ # Travis CI service files
|
|
└─ win32/ # Windows build system files
|
|
├─ cp_enc_map.c # Generated by `win32/cp_enc_map_gen.exe`
|
|
└─ ...
|
|
└─ ...
|
|
```
|