You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Rodrigo Cunha <ro...@gmail.com> on 2016/12/30 13:00:13 UTC

[users@httpd] Re: Compile php5 for apache2.4 error APXS

?

2016-12-29 12:02 GMT-02:00 Rodrigo Cunha <ro...@gmail.com>:

> Dears, help me please.
> I have httpd.2.4 compiled in my enviroment and i want compile too php5.6
> for test.
> but my ./configure strout displeyed error to apxs version, in stdout i
> see  error before my
> php search for apache1 apx and my apx is apache2
> below my commands in terminal and stdout:
>
> ./configure --with-apache=/usr/local/httpd-2.4.23.php5/
> --with-apxs2=/usr/local/httpd-2.4.23.php5/bin/apxs --with-mysql
>
> Configuring SAPI modules
> checking for AOLserver support... no
> checking for Apache 1.x module support via DSO through APXS... no
> checking for Apache 1.x module support... no
> configure: error: Invalid Apache directory - unable to find httpd.h under
> /usr/local/httpd-2.4.23.php5/
>
> root@nginx:/usr/local/src/php-5.6.29# apachectl -v
> Server version: Apache/2.4.23 (Unix)
> Server built:   Dec 22 2016 13:02:12
> root@nginx:/usr/local/src/php-5.6.29#
>
> PS: I compiled the php7 for this apache and i not have error in this step.
> --
> Atenciosamente,
> Rodrigo da Silva Cunha
> São Gonçalo, RJ - Brasil
>
>


-- 
Atenciosamente,
Rodrigo da Silva Cunha
São Gonçalo, RJ - Brasil

Re: [users@httpd] Re: Compile php5 for apache2.4 error APXS

Posted by Guillaume Rossolini <gu...@instantluxe.com>.
Hi Rodrigo,

I'm not sure what you are looking for, so I'll give you what worked for me.
My setup assumes you have built apr and apr-util from source beforehand, so
you may have to adjust accordingly.

In my (admittedly limited) experience, the best way is to unzip each httpd
and php version in their own folders. If you forget to "make clean" or
something similar, things will go wrong. Easiest is to just restart from
scratch each time.
You don't need a new httpd folder for each php version.

The way I build httpd (and I've been doing this for a while) is that I
delete the whole src folder and untar the whole release again each time,
followed by the ./configure and other commands.
For php, you don't need to rm/untar the whole folder every time and you can
just run this: "rm configure ; ./buildconf --force ; make clean". Or you
can rm/untar every time too, whatever you feel most comfortable with.
First build httpd in its own folder without regard for php, then build php
in its own folder by referencing the apxs2 you just built.

Before you begin, I'd suggest using a test machine and running each command
by hand. Please do NOT paste the whole script and expect it to work right
away.

For instance, recently I had this script for httpd (this method has worked
for me until v2.4.23, but for 2.4.23 you should now add @icing's patch for
the recent CVE-2016-8740, I just don't have the exact command at hand but
it should be along the lines of "patch -p1 < cve.diff"):

cd /usr/local/src ; rm -R httpd-2.4.23 ; tar -xjf httpd-2.4.23.tar.bz2
; cd /usr/local/src/httpd-2.4.23
./buildconf --with-apr=/usr/local/src/apr-1.5.2
--with-apr-util=/usr/local/src/apr-util-1.5.4
./configure --prefix=/usr/local/apache2 --with-program-name=apache2
--with-mpm=prefork --disable-cgi --disable-imap --with-ssl --with-pcre
--enable-mods-static="actions alias allowmethods auth-basic
auth-digest authn-core authn-file authz-core authz-host authz-user
autoindex cache deflate dir disk-cache dumpio env expires file-cache
filter headers http http2 include info logio log-config mem-cache mime
nghttp2-staticlib-deps negotiation proxy proxy-fcgi proxy-http rewrite
remoteip setenvif slotmem_shm so socache-shmcb ssl status substitute
unixd"
make && ./apache2 -V && ./apache2 -t -D DUMP_MODULES && ./apache2 -t
-D DUMP_VHOSTS

sudo service apache2 stop ; sudo make install && sudo service apache2 start


The above will build and install httpd in /usr/local/apache2.

Plus this one for php5:

cd /usr/local/src/php-5.6.28
rm -R ext/amqp 2>/dev/null ; mkdir ext/amqp ; cp -R ../amqp-1.7.1/* ext/amqp/
rm -R ext/geoip 2>/dev/null ; mkdir ext/geoip ; cp -R ../geoip-1.1.1/*
ext/geoip/
rm -R ext/http 2>/dev/null ; mkdir ext/http ; cp -R
../pecl_http-2.5.6/* ext/http/
rm -R ext/igbinary 2>/dev/null ; mkdir ext/igbinary ; cp -R
../igbinary-1.2.1/* ext/igbinary/
rm -R ext/redis 2>/dev/null ; mkdir ext/redis ; cp -R ../redis-2.2.8/*
ext/redis/
rm -R ext/raphf 2>/dev/null ; mkdir ext/raphf ; cp -R ../raphf-1.1.2/*
ext/raphf/
rm -R ext/propro 2>/dev/null ; mkdir ext/propro ; cp -R
../propro-1.0.2/* ext/propro/
rm -R ext/imagick 2>/dev/null ; mkdir ext/imagick ; cp -R
../imagick-3.4.1/* ext/imagick/
rm -R ext/timezonedb 2>/dev/null ; mkdir ext/timezonedb ; cp -R
../timezonedb-2016.9/* ext/timezonedb/
rm -R ext/ssh2 2>/dev/null ; mkdir ext/ssh2 ; cp -R ../ssh2-0.13/* ext/ssh2/
rm -R ext/libsodium 2>/dev/null ; mkdir ext/libsodium ; cp -R
../libsodium-php-1.0.6/* ext/libsodium/
cd /usr/local/src/php-5.6.28
rm configure ; ./buildconf --force ; make clean
./configure --prefix=/usr/local/php56 --disable-all
--with-apxs2=/usr/local/apache2/bin/apxs --with-iconv=/usr/local/lib
--with-icu-dir=/usr/local --enable-libxml --enable-xml --enable-dom
--enable-ctype --with-curl=/usr/local --enable-json --enable-session
--enable-simplexml --with-sqlite3 --enable-pdo --with-pdo-mysql
--with-pdo-sqlite --with-zlib=/usr/local --with-openssl --enable-soap
--enable-bcmath --with-bz2 --enable-calendar --enable-exif
--enable-ftp --with-gd --with-gettext --with-libxml-dir
--enable-mbstring --with-mcrypt --with-mhash --with-pcre-dir
--with-pcre-regex --enable-shmop --enable-sockets --enable-sysvmsg
--enable-sysvsem --enable-sysvshm --enable-wddx --with-xsl
--enable-zip --with-geoip --enable-filter --enable-hash
--enable-igbinary --with-mysqli --enable-tokenizer --enable-xmlreader
--enable-xmlwriter --enable-posix --enable-gd-native-ttf --with-t1lib
--with-jpeg-dir=/usr/local --with-png-dir=/usr/local
--with-freetype-dir=/usr/local --with-vpx-dir=/usr/local
--with-imagick=/usr/local --enable-redis --disable-redis-session
--enable-redis-igbinary --enable-timezonedb --enable-fileinfo
--enable-intl --with-kerberos --enable-raphf --enable-propro
--with-http-libevent-dir=/usr/local --with-http --enable-opcache
--with-tidy --with-librabbitmq-dir=/usr/local --with-amqp
--with-libsodium --with-ssh2=shared

make && ./sapi/cli/php -m && ./sapi/cli/php -v

sudo make install && php56 -m && php56 -v

#sudo service apache2 restart


The above will build php-5.6 and install it in /usr/local/php56.

And this one for php7:

cd /usr/local/src/php-7.1.0
rm -R ext/amqp 2>/dev/null ; mkdir ext/amqp ; cp -R ../amqp-1.7.1/* ext/amqp/
rm -R ext/geoip 2>/dev/null ; mkdir ext/geoip ; cp -R ../geoip-1.1.1/*
ext/geoip/
rm -R ext/igbinary 2>/dev/null ; mkdir ext/igbinary ; cp -R
../igbinary-2.0.0/* ext/igbinary/ ; cp
../igbinary-2.0.0/src/php7/php_igbinary.h ext/igbinary/
rm -R ext/redis 2>/dev/null ; mkdir ext/redis ; cp -R ../redis-3.0.0/*
ext/redis/
rm -R ext/imagick 2>/dev/null ; mkdir ext/imagick ; cp -R
../imagick-3.4.3RC1/* ext/imagick/
rm -R ext/timezonedb 2>/dev/null ; mkdir ext/timezonedb ; cp -R
../timezonedb-2016.9/* ext/timezonedb/
rm -R ext/ssh2 2>/dev/null ; mkdir ext/ssh2 ; cp -R ../ssh2-1.0/* ext/ssh2/
rm -R ext/libsodium 2>/dev/null ; mkdir ext/libsodium ; cp -R
../libsodium-php-1.0.6/* ext/libsodium/
cd /usr/local/src/php-7.1.0
rm configure ; ./buildconf --force ; make clean
./configure --prefix=/usr/local/php71 --disable-all
--with-apxs2=/usr/local/apache2/bin/apxs --with-iconv=/usr/local/lib
--with-icu-dir=/usr/local --enable-libxml --with-libxml-dir
--enable-xml --enable-dom --enable-ctype --with-curl=/usr/local
--enable-json --enable-session --enable-simplexml --enable-pdo
--with-pdo-mysql --with-zlib=/usr/local --with-openssl
--with-openssl-dir=/usr/local/lib --enable-soap --enable-bcmath
--with-bz2 --enable-calendar --enable-exif --enable-ftp --with-gd
--with-gettext --enable-mbstring --with-mcrypt --with-mhash
--with-pcre-dir --with-pcre-regex --enable-shmop --enable-sockets
--enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx
--with-xsl --enable-zip --with-geoip --enable-filter --enable-hash
--enable-igbinary --with-mysqli --enable-tokenizer --enable-xmlreader
--enable-xmlwriter --enable-posix --enable-gd-native-ttf
--with-jpeg-dir --with-png-dir --with-xpm-dir --with-freetype-dir
--with-webp-dir --with-imagick=/usr/local --enable-redis
--disable-redis-session --enable-redis-igbinary --enable-timezonedb
--enable-fileinfo --enable-intl --with-kerberos --enable-opcache
--with-tidy --with-librabbitmq-dir=/usr/local --with-amqp
--with-libsodium --with-ssh2=shared

make && ./sapi/cli/php -m && ./sapi/cli/php -v

sudo make install && php71 -m && php71 -v

#sudo service apache2 restart


The above will build php-7.1 and install it in /usr/local/php71.

Here, the "php56" and "php71" commands are aliases to their binaries with
the -c option to locale their config folder. To do this, add the following
to each user's .bashrc file, then logout and login again:
alias php56="/usr/local/php56/bin/php -c /usr/local/php56/etc/"
alias php71="/usr/local/php71/bin/php -c /usr/local/php71/etc/"

Obviously, php5 and php7 can't be enabled at the same time for the same
httpd instance so you'll have to adjust a few things, most probably the
--with-apxs2 directive in ./configure or the LoadModule directive in in
/usr/local/apache2/conf/apache2.conf.

And if I am doing anything wrong here, please send me feedback. Or if it
does work, that would be nice too.

Hope this helps,
Regards,

Re: [users@httpd] Re: Compile php5 for apache2.4 error APXS

Posted by Rodrigo Cunha <ro...@gmail.com>.
my file to be here:
root@nginx:/usr/local/httpd-2.4.23.php5# pwd
/usr/local/httpd-2.4.23.php5
root@nginx:/usr/local/httpd-2.4.23.php5# find . -iname '*httpd.h*'
./include/httpd.h
root@nginx:/usr/local/httpd-2.4.23.php5#

2016-12-30 11:50 GMT-02:00 Richard <li...@listmail.innovate.net>:

>
>
> > Date: Friday, December 30, 2016 11:00:13 -0200
> > From: Rodrigo Cunha <ro...@gmail.com>
> >
> >> Dears, help me please.
> >> I have httpd.2.4 compiled in my enviroment and i want compile too
> >> php5.6 for test.
> >> but my ./configure strout displeyed error to apxs version, in
> >> stdout i see  error before my
> >> php search for apache1 apx and my apx is apache2
> >> below my commands in terminal and stdout:
> >>
> >> ./configure --with-apache=/usr/local/httpd-2.4.23.php5/
> >> --with-apxs2=/usr/local/httpd-2.4.23.php5/bin/apxs --with-mysql
> >>
> >> Configuring SAPI modules
> >> checking for AOLserver support... no
> >> checking for Apache 1.x module support via DSO through APXS... no
> >> checking for Apache 1.x module support... no
> >> configure: error: Invalid Apache directory - unable to find
> >> httpd.h under /usr/local/httpd-2.4.23.php5/
> >>
> >> root@nginx:/usr/local/src/php-5.6.29# apachectl -v
> >> Server version: Apache/2.4.23 (Unix)
> >> Server built:   Dec 22 2016 13:02:12
> >> root@nginx:/usr/local/src/php-5.6.29#
> >>
> >> PS: I compiled the php7 for this apache and i not have error in
> >> this step. --
> >> Atenciosamente,
> >> Rodrigo da Silva Cunha
> >> São Gonçalo, RJ - Brasil
> >>
>
> Given that it couldn't find "httpd.h" in the location you gave:
>
>    configure: error: Invalid Apache directory - unable to
>    find httpd.h under /usr/local/httpd-2.4.23.php5/
>
> I'd start by looking for that file on your system and go from there.
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org
>
>


-- 
Atenciosamente,
Rodrigo da Silva Cunha
São Gonçalo, RJ - Brasil

Re: [users@httpd] Re: Compile php5 for apache2.4 error APXS

Posted by Richard <li...@listmail.innovate.net>.

> Date: Friday, December 30, 2016 11:00:13 -0200
> From: Rodrigo Cunha <ro...@gmail.com>
> 
>> Dears, help me please.
>> I have httpd.2.4 compiled in my enviroment and i want compile too
>> php5.6 for test.
>> but my ./configure strout displeyed error to apxs version, in
>> stdout i see  error before my
>> php search for apache1 apx and my apx is apache2
>> below my commands in terminal and stdout:
>> 
>> ./configure --with-apache=/usr/local/httpd-2.4.23.php5/
>> --with-apxs2=/usr/local/httpd-2.4.23.php5/bin/apxs --with-mysql
>> 
>> Configuring SAPI modules
>> checking for AOLserver support... no
>> checking for Apache 1.x module support via DSO through APXS... no
>> checking for Apache 1.x module support... no
>> configure: error: Invalid Apache directory - unable to find
>> httpd.h under /usr/local/httpd-2.4.23.php5/
>> 
>> root@nginx:/usr/local/src/php-5.6.29# apachectl -v
>> Server version: Apache/2.4.23 (Unix)
>> Server built:   Dec 22 2016 13:02:12
>> root@nginx:/usr/local/src/php-5.6.29#
>> 
>> PS: I compiled the php7 for this apache and i not have error in
>> this step. --
>> Atenciosamente,
>> Rodrigo da Silva Cunha
>> São Gonçalo, RJ - Brasil
>> 

Given that it couldn't find "httpd.h" in the location you gave:

   configure: error: Invalid Apache directory - unable to 
   find httpd.h under /usr/local/httpd-2.4.23.php5/

I'd start by looking for that file on your system and go from there.





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org