#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
function install_package(){
rootness
pre_installation_settings
download_files "php-5.4.13.tar.gz"
download_files "phpMyAdmin-3.5.8-all-languages.tar.gz"
download_files "apr-1.4.6.tar.gz"
download_files "apr-util-1.5.2.tar.gz"
download_files "libiconv-1.14.tar.gz"
download_files "libmcrypt-2.5.8.tar.gz"
download_files "mhash-0.9.9.9.tar.gz"
download_files "mcrypt-2.6.8.tar.gz"
download_files "re2c-0.13.5.tar.gz"
#Untar all files
mkdir -p $cur_dir
echo "============================all files,please wait a moment...======================="
for file in `ls *.tar.gz` ;
do
tar -zxf $file -C $cur_dir
done
echo "=========================================================================================="
echo ""
}
function rootness(){
# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
echo "Error:This script must be run as root!" 1>&2
exit 1
fi
}
function pre_installation_settings(){
get_char()
{
SAVEDSTTY=`stty -g`
stty -echo
stty cbreak
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw
stty echo
stty $SAVEDSTTY
}
echo ""
echo "Press any key to start...or Press Ctrl+C to cancel"
char=`get_char`
}
rpm -e php
yum -y remove php
#Set timezone
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#Install necessary tools
for packages in autoconf automake bison bzip2 bzip2-devel curl curl-devel cmake cpp crontabs diffutils e2fsprogs-devel expat-devel file flex freetype-devel gcc gcc-c++ gd glibc-devel glib2-devel gettext-devel icu kernel-devel libtool-libs libjpeg-devel libpng-devel libxml2-devel libidn-devel libcap-devel libtool-ltdl-devel libmcrypt-devel libc-client-devel libxml2 libxml2-devel libicu libicu-devel wget zlib-devel zip unzip patch mlocate make ncurses-devel readline-devel vim-minimal sendmail pam-devel pcre-devel openldap openldap-devel openssl-devel;
do yum -y install $packages; done
#Current folder
cur_dir=`pwd`
cd $cur_dir
function download_files(){
if [ -s $1 ]; then
echo "$1 [found]"
else
echo "$1 not found!!!download now......"
if ! wget -c http://teddysun.googlecode.com/files/$1;then
echo "Failed to download $1,please download it to "$cur_dir" directory manually and rerun the install script."
exit 1
fi
fi
}
install_package
if [ ! -d /usr/local/libiconv ];then
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make install
cd ..
rm -rf libiconv-1.14*
fi
cd libmcrypt-2.5.8
./configure --prefix=/usr
make install
cd ..
rm -rf libmcrypt-2.5.8*
cd mhash-0.9.9.9
./configure --prefix=/usr
make install
cd ..
rm -rf mhash-0.9.9.9*
/sbin/ldconfig
cd mcrypt-2.6.8
./configure
make install
cd ..
rm -rf mcrypt-2.6.8*
cd re2c-0.13.5
./configure
make install
cd ..
rm -rf re2c-0.13.5*
cd php-5.4.13
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/data/mysql/mysql.sock --with-config-file-scan-dir=/usr/local/php/php.d --with-openssl --with-zlib --with-curl --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-xmlrpc --enable-calendar --with-imap --with-kerberos --with-imap-ssl --with-ldap --enable-bcmath --enable-exif --enable-wddx --enable-tokenizer --enable-simplexml --enable-sockets --enable-ctype --enable-gd-native-ttf --enable-mbstring --enable-intl --enable-xml --enable-dom --enable-json --enable-session --enable-soap --with-mcrypt --enable-zip --enable-fpm --with-iconv=/usr/local/libiconv --with-mysql=/usr/local/mysql --with-icu-dir=/usr --with-mhash=/usr --with-pcre-dir --without-pear
make && make install
cp -pr sapi/fpm/php-fpm.conf /usr/local/php/etc/
cd ..
rm -rf php-5.4.13*