#!/bin/sh # Script updated 2009-07-24 by ercoppa (ercoppa.org) to convert this script for PHP 5.3 (with all features of dreamhost, # except kerberos) with Xdebug and APC # # Script updated 2009-05-24 by ksmoe to correct copying of correct PHP cgi file (php-cgi instead of php) # Script updated 2006-12-25 by Carl McDade (hiveminds.co.uk) to allow memory limit and freetype # # Script updated 2007-11-24 by Andrew (ajmconsulting.net) to allow 3rd wget line to pass # LIBMCRYPT version information (was set as static download file name previously.) # # Script updated 2009-4-25 by Daniel (whathuhstudios.com) for latest source versions # # Save the code to a file as *.sh # Abort on any errors # set -e # The domain in which to install the PHP CGI script. export DOMAIN="librecode.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 # Pre-download clean up!!!! rm -rf $SRCDIR # Update version information here. PHP5="php-5.3.0" CURL="curl-7.19.5" XDEBUG="xdebug-2.0.5" AUTOCONF="autoconf-2.63" CCLIENT="imap-2004g" CCLIENT_DIR="imap-2004g" OPENSSL="openssl-0.9.8k" OPENSSL_DIR="openssl-0.9.8k" LIBMCRYPT="libmcrypt-2.5.8" APC="APC-3.1.2" # What PHP features do you want enabled? PHPFEATURES="--prefix=${INSTALLDIR} \ --with-config-file-path=${INSTALLDIR}/etc/php5/${DOMAIN} \ --with-config-file-scan-dir=${INSTALLDIR}/etc/php5/${DOMAIN} \ --enable-fastcgi \ --bindir=$INSTALLDIR/bin \ --enable-force-cgi-redirect \ --with-xml \ --with-freetype-dir=/usr \ --with-mhash=/usr \ --with-zlib-dir=/usr \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --with-curl=${INSTALLDIR} \ --with-gd \ --enable-gd-native-ttf \ --enable-memory-limit \ --enable-ftp \ --enable-exif \ --enable-sockets \ --enable-wddx \ --enable-sqlite-utf8 \ --enable-calendar \ --enable-mbstring \ --enable-mbregex \ --enable-bcmath \ --with-mysql=/usr \ --with-mysqli \ --without-pear \ --with-gettext \ --with-pdo-mysql \ --with-openssl=${INSTALLDIR} \ --with-imap=${INSTALLDIR} \ --with-xsl \ --with-ttf=/usr \ --with-xslt \ --with-xslt-sablot=/usr \ --with-dom-xslt=/usr \ --with-mcrypt=${INSTALLDIR} \ --with-imap-ssl=/usr" # ---- end of user-editable bits. Hopefully! ---- # Push the install dir's bin directory into the path export PATH=${INSTALLDIR}/bin:$PATH # set up directories mkdir -p ${SRCDIR} mkdir -p ${INSTALLDIR} if [ ! -f ${DISTDIR} ] then mkdir -p ${DISTDIR} fi cd ${DISTDIR} # Get all the required packages if [ ! -f ${DISTDIR}/${PHP5}.tar.gz ] then wget -c http://it.php.net/get/${PHP5}.tar.gz/from/ch.php.net/mirror fi if [ ! -f ${DISTDIR}/${CURL}.tar.gz ] then wget -c http://curl.haxx.se/download/${CURL}.tar.gz fi if [ ! -f ${DISTDIR}/${AUTOCONF}.tar.gz ] then wget -c http://ftp.gnu.org/gnu/autoconf/${AUTOCONF}.tar.gz fi if [ ! -f ${DISTDIR}/${XDEBUG}.tgz ] then wget -c http://xdebug.org/files/${XDEBUG}.tgz fi if [ ! -f ${DISTDIR}/${CCLIENT}.tar.Z ] then wget -c ftp://ftp.cac.washington.edu/imap/old/${CCLIENT}.tar.Z fi if [ ! -f ${DISTDIR}/${OPENSSL}.tar.gz ] then wget -c http://www.openssl.org/source/${OPENSSL}.tar.gz fi if [ ! -f ${DISTDIR}/${LIBMCRYPT}.tar.gz ] then wget -c http://easynews.dl.sourceforge.net/sourceforge/mcrypt/${LIBMCRYPT}.tar.gz fi if [ ! -f ${DISTDIR}/${APC}.tgz ] then wget -c http://pecl.php.net/get/${APC}.tgz fi echo ---------- Unpacking downloaded archives. This process may take several minutes! ---------- cd ${SRCDIR} # Unpack them all echo Extracting ${PHP5}... tar xzf ${DISTDIR}/${PHP5}.tar.gz echo Done. echo Extracting ${CURL}... tar xzf ${DISTDIR}/${CURL}.tar.gz echo Done. echo Extracting ${XDEBUG}... tar xzf ${DISTDIR}/${XDEBUG}.tgz echo Done. echo Extracting ${AUTOCONF}... tar xzf ${DISTDIR}/${AUTOCONF}.tar.gz echo Done. echo Extracting ${CCLIENT}... uncompress -cd ${DISTDIR}/${CCLIENT}.tar.Z |tar x echo Done. echo Extracting ${OPENSSL}... uncompress -cd ${DISTDIR}/${OPENSSL}.tar.gz |tar x echo Done. echo Extracting ${LIBMCRYPT}... tar xzf ${DISTDIR}/${LIBMCRYPT}.tar.gz echo Done. echo Extracting ${APC}... tar xzf ${DISTDIR}/${APC}.tgz echo Done. # Build them in the required order to satisfy dependencies #cURL echo ################### echo Compile CURL echo ################### cd ${SRCDIR}/${CURL} ./configure --enable-ipv6 --enable-cookies \ --enable-crypto-auth --prefix=${INSTALLDIR} # make clean make make install #CCLIENT echo ################### echo Compile CCLIENT echo ################### cd ${SRCDIR}/${CCLIENT_DIR} make ldb # Install targets are for wusses! cp c-client/c-client.a ${INSTALLDIR}/lib/libc-client.a cp c-client/*.h ${INSTALLDIR}/include #OPENSSL echo ################### echo Compile OPENSSL echo ################### # openssl cd ${SRCDIR}/${OPENSSL_DIR} ./config --prefix=${INSTALLDIR} make make install #MCRYPT echo ################### echo Compile MCRYPT echo ################### cd ${SRCDIR}/${LIBMCRYPT} ./configure --disable-posix-threads --prefix=${INSTALLDIR} # make clean make make install #PHP 5 echo ################### echo Compile PHP echo ################### cd ${SRCDIR}/${PHP5} ./configure ${PHPFEATURES} # make clean make make install # Copy a basic configuration for PHP mkdir -p ${INSTALLDIR}/etc/php5/${DOMAIN} cp ${SRCDIR}/${PHP5}/php.ini-production ${INSTALLDIR}/etc/php5/${DOMAIN}/php.ini #AUTOCONF echo ################### echo Compile AUTOCONF echo ################### cd ${SRCDIR}/${AUTOCONF} ./configure --prefix=${INSTALLDIR} # make clean make make install # XDEBUG echo ################### echo Compile XDEBUG echo ################### cd ${SRCDIR}/${XDEBUG} export PHP_AUTOHEADER=${INSTALLDIR}/bin/autoheader export PHP_AUTOCONF=${INSTALLDIR}/bin/autoconf echo $PHP_AUTOHEADER echo $PHP_AUTOCONF ${INSTALLDIR}/bin/phpize ./configure --enable-xdebug --with-php-config=${INSTALLDIR}/bin/php-config --prefix=${INSTALLDIR} # make clean make mkdir -p ${INSTALLDIR}/extensions cp modules/xdebug.so ${INSTALLDIR}/extensions echo "zend_extension=${INSTALLDIR}/extensions/xdebug.so" >> ${INSTALLDIR}/etc/php5/${DOMAIN}/xdebug.ini # APC echo ################### echo Compile APC echo ################### cd ${SRCDIR}/${APC} ${INSTALLDIR}/bin/phpize ./configure --enable-apc --enable-apc-mmap --with-php-config=${INSTALLDIR}/bin/php-config --prefix=${INSTALLDIR} # make clean make cp modules/apc.so ${INSTALLDIR}/extensions echo "extension=${INSTALLDIR}/extensions/apc.so" >> ${INSTALLDIR}/etc/php5/${DOMAIN}/apc.ini # Copy PHP CGI mkdir -p ${HOME}/${DOMAIN}/cgi-bin chmod 0755 ${HOME}/${DOMAIN}/cgi-bin cp ${INSTALLDIR}/bin/php-cgi ${HOME}/${DOMAIN}/cgi-bin/php.cgi rm -rf $SRCDIR $DISTDIR # Create .htaccess if [ -f ${HOME}/${DOMAIN}/.htaccess ] then echo # echo '#####################################################################' echo ' Your domain already has a .htaccess, it is ranamed .htaccess_old ' echo ' --> PLEASE FIX THIS PROBLEM <-- ' echo '#####################################################################' echo # mv ${HOME}/${DOMAIN}/.htaccess ${HOME}/${DOMAIN}/.htaccess_old fi echo 'Options +ExecCGI' >> ${HOME}/${DOMAIN}/.htaccess echo 'AddHandler php-cgi .php' >> ${HOME}/${DOMAIN}/.htaccess echo 'Action php-cgi /cgi-bin/php.cgi' >> ${HOME}/${DOMAIN}/.htaccess echo '' >> ${HOME}/${DOMAIN}/.htaccess echo '' >> ${HOME}/${DOMAIN}/.htaccess echo 'Order Deny,Allow' >> ${HOME}/${DOMAIN}/.htaccess echo 'Deny from All' >> ${HOME}/${DOMAIN}/.htaccess echo 'Allow from env=REDIRECT_STATUS' >> ${HOME}/${DOMAIN}/.htaccess echo '' >> ${HOME}/${DOMAIN}/.htaccess echo ---------- INSTALL COMPLETE! ---------- echo echo 'Configuration files:' echo "1) General PHP -> ${INSTALLDIR}/etc/php5/${DOMAIN}/php.ini" echo "2) Xdebug conf -> ${INSTALLDIR}/etc/php5/${DOMAIN}/xdebug.ini" echo "3) APC conf -> ${INSTALLDIR}/etc/php5/${DOMAIN}/apc.ini" echo echo 'You have to modify these files in order to enable Xdebug or APC features.' exit 0