Search code examples
phpbuildautoconfbuildconfig

Where do I get the configure script for PHP source?


I am currently trying to build an extension for PHP via PECL.

/Applications/MAMP/bin/php/php5.4.39/bin/pecl install memcached

I am using OS X and MAMP, so I got this error.

/Applications/MAMP/bin/php/php5.4.39/include/php/Zend/zend.h:51:11: fatal error: 'zend_config.h' file not found

Since MAMP is shipping without any header files for PHP, I had to get them manually. So I went to here https://github.com/php/php-src/releases/tag/php-5.4.39 and downloaded the source.

I extracted it to /Applications/MAMP/bin/php/php5.4.39/include/ and renamed the folder php-5php-src-PHP-5.4.39 folder to php and tried change to the folder /Applications/MAMP/bin/php/php5.4.39/include/php.

I tried to run the configuration script with ./configure. But it was not found. I only found an configure.ln, which as I was told was for autoconf. So I ran autoconf. Autoconf crashed with errors like this:

configure.in:2: error: possibly undefined macro: dnl

I was confused. I found the script ./buildconf which told me the following:

You should not run buildconf in a release package. use buildconf --force to override this check.

I forced it and there we go: a ./configure script finally existed.

I checked the php.net site for the same release, because I thought this whole confusion has not been there the last time I did this.

So I downloaded this: http://php.net/get/php-5.4.39.tar.bz2/from/a/mirror

It had the ./configure script.

Now my question: Why are the relases on php.net and the releases on GitHub different? And how if not with the ./buildconf script should I obtain a ./configure script without using ./buildconf which should obviously not be used in a release version?

Thanks :)


Solution

  • GitHub contains a mirror of PHP development version. Development versions usually don't have configure script, because it has to be regenerated each time any of autotools input files changes. And these files tend to change during development phase.

    You may read instructions on how to use development version and buildconf script on php website.

    Release versions for end users, with generated configure script, should be downloaded directly from php.net.