#!/bin/sh echo php5-install.sh echo - This script compiles and installs PHP 5 and all prerequisites echo - Run php5-install-prep.sh before running this script echo read -p "(Press any key to continue)" temp; echo # Version 0.6, 2007-12-20 # # - Updated 2007-01-15 by Charles Wiltgen (charles@wiltgen.net) # - Make "nicer" to help keep it from getting killed by DreamHost # - Make less verbose to keep signal-to-noise level high # - Updated 2006-12-25 by Carl McDade (hiveminds.co.uk) # - Allow memory limit and freetype # - Updated 2007-12-20 by David Szpunar (infotech.lakeviewchurch.org) # - Update versions of freetype, curl, php5 to match php5-install-prep.sh # - updated 2008-01-16 by osha (osha@iqresearch.com) # - fixed some typos and made more explicit what the domain variable is # Abort on any errors set -e ################################## # User-editable settings (start) # ################################## # The domain in which to install the PHP CGI script # this is the name of the folder that your domain reads files from # (no "www" unless it is in the folder name) export DOMAIN="yourdomainhere.com" # Where do you want all this stuff built? I'd recommend picking a local # filesystem. # ***Don't pick a directory that already exists!*** We clean up after # ourselves at the end! SRCDIR=${HOME}/source # And where should it be installed? INSTALLDIR=${HOME}/php5 # Set DISTDIR to somewhere persistent, if you plan to muck around with this # script and run it several times! DISTDIR=${HOME}/dist # Update version information here. PHP5="php-5.2.5" LIBICONV="libiconv-1.12" LIBMCRYPT="libmcrypt-2.5.7" LIBXML2="libxml2-2.6.27" LIBXSLT="libxslt-1.1.18" MHASH="mhash-0.9.7.1" ZLIB="zlib-1.2.3" CURL="curl-7.17.1" LIBIDN="libidn-0.6.9" CCLIENT="imap-2004g" CCLIENT_DIR="imap-2004g" # Another pest! FREETYPE="freetype-2.3.5" GMP="gmp-4.2.2" # What PHP features do you want enabled? PHPFEATURES="--prefix=${INSTALLDIR} \ --with-config-file-path=${INSTALLDIR}/etc/php5/${DOMAIN} \ --enable-fastcgi \ --enable-force-cgi-redirect \ --with-gmp=${INSTALLDIR} --with-xml \ --with-libxml-dir=${INSTALLDIR} \ --with-freetype-dir=${INSTALLDIR} \ --enable-soap \ --with-openssl=/usr \ --with-mhash=${INSTALLDIR} \ --with-mcrypt=${INSTALLDIR} \ --with-zlib-dir=${INSTALLDIR} \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --with-gd \ --enable-gd-native-ttf \ --enable-memory-limit --enable-ftp \ --enable-exif \ --enable-sockets \ --enable-wddx \ --with-iconv=${INSTALLDIR} \ --enable-sqlite-utf8 \ --enable-calendar \ --with-curl=${INSTALLDIR} \ --enable-mbstring \ --enable-mbregex \ --with-mysql=/usr \ --with-mysqli \ --without-pear \ --with-gettext \ --with-imap=${INSTALLDIR} \ --with-imap-ssl=/usr" ################################ # User-editable settings (end) # ################################ echo ------------------------------------------------------ echo -- Compiling and installing PHP 5 and prerequisites -- echo ------------------------------------------------------ # Pre-prep cleanup rm -rf $INSTALLDIR # Build packages in the required order to satisfy dependencies. # # libiconv # echo echo --- Building libiconv echo cd ${SRCDIR}/${LIBICONV} echo " Configuring..." ./configure --enable-extra-encodings --prefix=${INSTALLDIR} \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Done!" # # libxml2 # echo echo --- Building libxml2 echo cd ${SRCDIR}/${LIBXML2} echo " Configuring..." ./configure --with-iconv=${INSTALLDIR} --prefix=${INSTALLDIR} \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Done!" # # libxslt # echo echo --- Building libxslt echo cd ${SRCDIR}/${LIBXSLT} echo " Configuring..." ./configure --prefix=${INSTALLDIR} \ --with-libxml-prefix=${INSTALLDIR} \ --with-libxml-include-prefix=${INSTALLDIR}/include/ \ --with-libxml-libs-prefix=${INSTALLDIR}/lib/ \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Done!" # # zlib # echo echo --- Building: zlib echo cd ${SRCDIR}/${ZLIB} echo " Configuring..." ./configure --shared --prefix=${INSTALLDIR} \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Done!" # # libmcrypt # echo echo --- Building: libmcrypt echo cd ${SRCDIR}/${LIBMCRYPT} echo " Configuring..." ./configure --disable-posix-threads --prefix=${INSTALLDIR} \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Done!" #libmcrypt lltdl issue!! cd ${SRCDIR}/${LIBMCRYPT}/libltdl echo " Configuring..." ./configure --prefix=${INSTALLDIR} --enable-ltdl-install \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Done!" # # mhash # echo echo --- Building: mhash echo cd ${SRCDIR}/${MHASH} echo " Configuring..." ./configure --prefix=${INSTALLDIR} \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Done!" # # freetype # echo echo --- Building: freetype echo cd ${SRCDIR}/${FREETYPE} echo " Configuring..." ./configure --prefix=${INSTALLDIR} \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Done!" # # libidn # echo echo --- Building: libidn echo cd ${SRCDIR}/${LIBIDN} echo " Configuring..." ./configure --with-iconv-prefix=${INSTALLDIR} --prefix=${INSTALLDIR} \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Done!" # # cURL # echo echo --- Building: cURL echo cd ${SRCDIR}/${CURL} echo " Configuring..." ./configure --with-ssl=${INSTALLDIR} --with-zlib=${INSTALLDIR} \ --with-libidn=${INSTALLDIR} --enable-ipv6 --enable-cookies \ --enable-crypto-auth --prefix=${INSTALLDIR} \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Done!" # # c-client # echo echo --- Building: c-client echo cd ${SRCDIR}/${CCLIENT_DIR} echo " Making..." make ldb > /dev/null 2>&1 echo " Installing..." cp c-client/c-client.a ${INSTALLDIR}/lib/libc-client.a cp c-client/*.h ${INSTALLDIR}/include echo " Done!" echo echo --- Building GMP --- echo cd ${SRCDIR}/${GMP} echo " Configuring..." ./configure --prefix=${INSTALLDIR} --libdir=${INSTALLDIR}/lib # make clean echo " Making..." make echo " Installing..." make install # # PHP 5 # echo echo --- Building PHP 5 --- echo cd ${SRCDIR}/${PHP5} echo " Configuring..." ./configure ${PHPFEATURES} \ > /dev/null 2>&1 echo " Making..." nice -n 19 make > /dev/null 2>&1 echo " Installing..." make install > /dev/null 2>&1 echo " Copying configuration file (PHP.INI)" mkdir -p ${INSTALLDIR}/etc/php5/${DOMAIN} cp ${SRCDIR}/${PHP5}/php.ini-dist ${INSTALLDIR}/etc/php5/${DOMAIN}/php.ini echo " Copying PHP CGI" mkdir -p ${HOME}/${DOMAIN}/cgi-bin chmod 0755 ${HOME}/${DOMAIN}/cgi-bin # uncomment the line below for newer versions of php5 (5.23 and higher) cp ${INSTALLDIR}/bin/php-cgi ${HOME}/${DOMAIN}/cgi-bin/php.cgi # cp ${INSTALLDIR}/bin/php ${HOME}/${DOMAIN}/cgi-bin/php.cgi echo --------------------------------------- echo ---------- INSTALL COMPLETE! ---------- echo --------------------------------------- # Finally, you need to add this to your site's .htaccess file to use # the version of PHP that you've just compiled: # # AddHandler phpFive .php # Action phpFive /cgi-bin/php.cgi