Help make a PHP Compile with MSSQL install script!


#1

Here is what I have so far…

This is the first of two scripts…it downloads the packages and unzips them…

the only difference in this and the wiki version is that it downloads FreeTDS and unzips it

#!/bin/sh

Version 0.6, 2007-12-16

- Updated 2007-12-16 by AskApache (www.askapache.com)

- Implemented functions to fetch the URI and decompress it

- Added a couple more error-checks

- Replaced wget with cURL

- Added more to help keep it from getting killed

- Updated to php-5.2.3, curl-7.17.1, freetype-2.3.5

- 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

Abort on any errors

set -e

The domain in which to install the PHP CGI script.

export DOMAIN=“yourdomain.com

Where do you want all this stuff built? I’d recommend picking a local filesystem.

Don’t pick a directory that already exists!

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.11"
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.8"
CCLIENT="imap-2004g"
CCLIENT_DIR="imap-2004g"
FREETYPE="freetype-2.3.5"
FREETDS=“freetds-stable”

Push the install dir’s bin directory into the path

export PATH=${INSTALLDIR}/bin:$PATH

function aa_unpack () {

compressed, tar and gzip files to DISTDIR

if [ -f $DISTDIR/$1* ] ; then
echo Extracting “$1”;
zcat ${DISTDIR}/$1* | tar -xvf - &>/dev/null;
echo Done.; echo; wait
fi
}

function aa_grab () {
#saves file to SRCDIR
echo basename $1
curl -L --retry 20 --max-time 1800 --retry-delay 30 -# -f --max-redirs 4 --remote-name “$1”
}

echo
echo --------------------------------------------------
echo – Run this script before php5-install.sh
echo --------------------------------------------------
echo
echo - Downloads and unpacks all prerequisite packages
echo - SRCDIR and DISTDIR will be deleted
echo
read -p " (Press any key to continue)" temp;
echo;echo

cleanup to remove source and dist directories if present

if [ -d “$SRCDIR” ] || [ -d “$DISTDIR” ];then
echo
echo — Cleaning up any previous attempts —
rm -rf $SRCDIR $DISTDIR &>/dev/null
echo Done.
echo
wait
fi

set up directories

mkdir -p ${SRCDIR} ${INSTALLDIR} ${DISTDIR} &>/dev/null

Get all the required packages

echo;echo
echo — Downloading all required packages —
echo

cd ${DISTDIR}
aa_grab http://us.php.net/distributions/${PHP5}.tar.gz
aa_grab http://mirrors.usc.edu/pub/gnu/libiconv/${LIBICONV}.tar.gz
aa_grab http://umn.dl.sourceforge.net/sourceforge/mcrypt/${LIBMCRYPT}.tar.gz
aa_grab ftp://xmlsoft.org/libxml2/${LIBXML2}.tar.gz
aa_grab ftp://xmlsoft.org/libxml2/${LIBXSLT}.tar.gz
aa_grab http://umn.dl.sourceforge.net/sourceforge/mhash/${MHASH}.tar.gz
aa_grab http://www.zlib.net/${ZLIB}.tar.gz
aa_grab http://curl.haxx.se/download/${CURL}.tar.gz
aa_grab http://easynews.dl.sourceforge.net/sourceforge/freetype/${FREETYPE}.tar.gz
aa_grab ftp://alpha.gnu.org/pub/gnu/libidn/${LIBIDN}.tar.gz
aa_grab ftp://ftp.cac.washington.edu/imap/old/${CCLIENT}.tar.Z
aa_grab ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
wait
echo Done.

Extract the files from the required packages.

echo;echo;echo
echo — Unpacking downloaded archives. This process may take several minutes! —
echo

cd ${SRCDIR}
aa_unpack ${PHP5}
aa_unpack ${LIBICONV}
aa_unpack ${LIBMCRYPT}
aa_unpack ${LIBXML2}
aa_unpack ${LIBXSLT}
aa_unpack ${MHASH}
aa_unpack ${ZLIB}
aa_unpack ${CURL}
aa_unpack ${LIBIDN}
aa_unpack ${CCLIENT}
aa_unpack ${FREETYPE}
aa_unpack ${FREETDS}
wait

echo --------------------------------------------------
echo – Done downloading and unpacking prerequisites –
echo --------------------------------------------------

exit 0;

secondly, this script configures, makes, and installs the files

#!/bin/sh
set -v
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 2008-04-05 by Tom Ransom (transom@well.com)

- Added missing continuation slash to line #81 (after enable-memory-limit)

- updated 2008-01-16 by osha (osha@iqresearch.com)

- fixed some typos and made more explicit what the domain variable is

- Updated 2007-12-20 by David Szpunar (infotech.lakeviewchurch.org)

- Update versions of freetype, curl, php5 to match php5-install-prep.sh

- 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

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=“austinscott.name

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.11"
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.8"
CCLIENT="imap-2004g"
CCLIENT_DIR=“imap-2004g” # Another pest!
FREETYPE="freetype-2.3.5"
FREETDS=“freetds-0.64”

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-xml
–with-libxml-dir=${INSTALLDIR}
–with-mssql=${INSTALLDIR}
–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
–enable-mbstring
–enable-mbregex
–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} \

[quote]/dev/null 2>&1
[/quote]

echo " Making…"
nice -n 19 make > /dev/null 2>&1
echo " Installing…“
make install > /dev/null 2>&1
echo " Done!”

echo
echo — Building freetds
echo
cd ${SRCDIR}/${FREETDS}
echo " Configuring…"
./configure --enable-msdblib --prefix=${INSTALLDIR} \

[quote]/dev/null 2>&1
[/quote]

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} \

[quote]/dev/null 2>&1
[/quote]

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/ \

[quote]/dev/null 2>&1
[/quote]

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} \

[quote]/dev/null 2>&1
[/quote]

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} \

[quote]/dev/null 2>&1
[/quote]

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 \

[quote]/dev/null 2>&1
[/quote]

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} \

[quote]/dev/null 2>&1
[/quote]

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} \

[quote]/dev/null 2>&1
[/quote]

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} \

[quote]/dev/null 2>&1
[/quote]

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} \

[quote]/dev/null 2>&1
[/quote]

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!”

PHP 5

echo
echo — Building PHP 5 —
echo
cd ${SRCDIR}/${PHP5}
echo " Configuring…"
./configure ${PHPFEATURES} \

[quote]/dev/null 2>&1
[/quote]

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

cp ${INSTALLDIR}/bin/php-cgi ${HOME}/${DOMAIN}/cgi-bin/php.cgi

uncomment the line below for older versions of php5 (<5.23)

cp ${INSTALLDIR}/bin/php ${HOME}/${DOMAIN}/cgi-bin/php.cgi

echo
echo — Cleaning up
echo

rm -rf $SRCDIR $DISTDIR

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

ok, well I get internal server errors after doing this. Can anyone help me out?