Re: Re: Compile php5 for apache2.4 error APXS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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,


[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux