Source Development

The source code behind PHP is managed through the versioning system SVN. There are three active branches:

  • PHP 5.2 (Stable) is branched as PHP_5_2
  • PHP 5.3 (Stable) is branched as PHP_5_3
  • PHP 6.0 (Alpha) is trunk

In SVN, when checking out these modules it will also automagically include the TSRM, Zend and ZendEngine2 modules.

Getting the source code

There are two main methods for getting the latest PHP source files, either directly from SVN or by downloading a Snapshot


This is where developers actively add/modify code. A few differences from snaps:

  • You can write patches or commit to SVN
  • You can test the build tools via buildconf
  • Should specify the branch when checking out


Each branch is built around four times a day, and the snapshots system runs a few scripts in order to lesson the burden of required tools for building. A few differences from SVN:

  • Snaps do not require all build tools like buildconf and flex
  • It's easier to deal with
  • Can refer to a specific snap when reporting bugs


Because PHP is a glue for many other libraries, often times third-party libraries are required to build it. For example, if you want to build in Postgresql support then the server doing the build requires access to PostgreSQL and its developmental (head) files. When a system uses packages or RPMs, often times this means also installing foo-dev or foo-devel packages as they contain the needed header files.

The PHP configure system checks for these libraries and will inform you if they are missing.

Configuration options specific to developers

  • --enable-debug : this includes extra symbols
  • --maintainer-zts : ...
  • valgrind
  • gdb
  • ...

Learning how to write php-src code

  • Internals docs
  • Example extension
  • All PECL extensions (SVN)

Writing an extension

  • What is PECL?
  • Why PECL?


The bugs system is used to report bugs and feature requests for internals and related activities like the documentation and website.

  • Finding open bugs
  • Reporting bugs
  • Submitting patches
  • Generating a back trace

Writing Tests

Writing tests means ...

  • A test example
  • Code coverage


  • How we do it
  • How you can do it
  • What is needed now
  • Determine different types of documentation
    • developer (internals)
    • extension (for a specific extension)
    • installation (for installing php somewhere)
    • general (for anything else)
    • the howto itself
    • user notes
    • other wiki stuff


  • How to contact developers
  • How to contact an extension maintainer
    • What to do if the maintainer does not reply
  • Different modes of communication (mail, irc)
    • If nobody replies in irc, it could be because ...
doc/scratchpad/wheretohelp.txt · Last modified: 2017/09/22 13:28 (external edit)