#!/bin/sh ########### # need to replace the following # PHP_BUILD_DIR = {PHP_BUILD_DIR} # CP_BUILD_DIR = {CP_BUILD_DIR} # PHP_VERSION = {PHP_VERSION} # PHP_CONF_OPTIONS = {PHP_CONF_OPTIONS} # LSWS_HOME = {LSWS_HOME} ############ check_errs() { if [ "${1}" -ne "0" ] ; then echo "**ERROR** ${2}" exit ${1} fi } test_phpsrc_ok() { echo "Extracting PHP source archive: tar -zxf ${1}" tar -zxf ${1} if [ "$?" -ne "0" ] ; then ## remove bad copy rm -f ${1} echo "Could not extract PHP source archive" return 1 fi return 0 } echo "" echo "==============================================" echo "Start building PHP {PHP_VERSION} with LSAPI" echo "==============================================" echo `date` echo "" ulimit -m unlimited ulimit -v unlimited if [ ! -e "{PHP_BUILD_DIR}" ] ; then mkdir -p {PHP_BUILD_DIR} check_errs $? "Could not create build directory {PHP_BUILD_DIR}" fi echo "Changing to build directory {PHP_BUILD_DIR}" cd {PHP_BUILD_DIR} check_errs $? "Could not get into build directory" if [ -e php-{PHP_VERSION} ] ; then rm -rf php-{PHP_VERSION} check_errs $? "Could not delete old php directory" fi if [ -e "{CP_BUILD_DIR}/php-{PHP_VERSION}" ] ; then echo "Detected php build directory for cPanel {CP_BUILD_DIR}/php-{PHP_VERSION}" echo "Same source code will be copied over" cp -rp "{CP_BUILD_DIR}/php-{PHP_VERSION}" php-{PHP_VERSION} check_errs $? "Failed to copy over php source directory" else check_errs 1 "Cannot find php build directory for cPanel, please run EasyApache first to build PHP with correct options for Apache." fi echo "" DOWNLOAD_URL="http://update.litespeedtech.com/ws/latest.php" LSAPI_VERSION=`wget -q --output-document=- $DOWNLOAD_URL` LSAPI_VERSION=`expr "$LSAPI_VERSION" : '.*PHP-LSAPI=\([0-9\.]*\)'` echo "Query lastest LSAPI version: $LSAPI_VERSION" if [ -e "php-litespeed-$LSAPI_VERSION.tgz" ] ; then echo "php-litespeed-$LSAPI_VERSION.tgz already downloaded, use the saved copy" else DOWNLOAD_URL="https://www.litespeedtech.com/packages/lsapi/php-litespeed-$LSAPI_VERSION.tgz" echo "Retrieving LSAPI archive" wget -nv -O "php-litespeed-$LSAPI_VERSION.tgz" $DOWNLOAD_URL check_errs $? "Could not retrieve LSAPI archive" fi cd php-{PHP_VERSION}/sapi check_errs $? "Could not get into php/sapi directory" if [ -e litespeed/Makefile.frag ] ; then mv -f litespeed/Makefile.frag litespeed/Makefile.frag.package fi echo "Extracting LSAPI archive: tar -xzf php-litespeed-$LSAPI_VERSION.tgz" tar -xzf "../../php-litespeed-$LSAPI_VERSION.tgz" check_errs $? "Could not extract LSAPI archive" if [ -e litespeed/Makefile.frag.package ] ; then mv -f litespeed/Makefile.frag.package litespeed/Makefile.frag fi echo "" echo "Finished gathering all the source code" echo "" echo "Generating configuration script" cd .. check_errs $? "Could not get into php directory" sleep 1 touch ac* check_errs $? "Could not touch ac*" rm -rf autom4te.* PHP_MAIN_VER=`expr "{PHP_VERSION}" : '\([0-9]*\.[0-9]*\)'` PHP_MAIN_VER1=`expr "$PHP_MAIN_VER" : '\([0-9]*\)\.'` PHP_MAIN_VER2=`expr "$PHP_MAIN_VER" : '[0-9]*\.\([0-9]*\)'` BUILDCONF_FORCE=N if [ "$PHP_MAIN_VER1" -lt "5" ] ; then BUILDCONF_FORCE=Y elif [ "$PHP_MAIN_VER1" = "5" ] && [ "$PHP_MAIN_VER2" -lt "3" ] ; then BUILDCONF_FORCE=Y fi if [ "$BUILDCONF_FORCE" = "Y" ] ; then ./buildconf --force check_errs $? "Could not generate configuration script for version prior to 5.3" fi rm config.cache echo "Configuring PHP build (2-3 minutes)" echo "{PHP_CONF_OPTIONS}" OS=`uname -s` if [ "x$OS" = "xFreeBSD" ]; then CFLAGS='-O3' LDFLAGS='-L/usr/local/lib' {PHP_CONF_OPTIONS} else CFLAGS='-O3' {PHP_CONF_OPTIONS} fi check_errs $? "Could not configure PHP build" cp -fp "{CP_BUILD_DIR}/php-{PHP_VERSION}/libtool" . PLF=`uname -p` if [ "x$PLF" = "xx86_64" ] ; then # work around for libtool problem for linux DLSCH=`grep 'sys_lib_dlsearch_path_spec="/lib /usr/lib ' libtool` if [ "x$DLSCH" != "x" ] ; then echo " .. work around for libtool problem: sys_lib_dlsearch_path_spec should use lib64" cp libtool libtool.orig sed -e 's/sys_lib_dlsearch_path_spec=\"\/lib \/usr\/lib /sys_lib_dlsearch_path_spec=\"\/lib64 \/usr\/lib64 /' libtool.orig > libtool if [ "$?" -ne "0" ] ; then echo " sed command error, please try to modify libtool manually using lib64 for line: sys_lib_dlsearch_path_spec=\"/lib /usr/lib\" " fi fi fi make clean echo "Compiling PHP (5-10 minutes)" echo `date` make check_errs $? "Could not compile PHP" #make install PHP_INI=/usr/local/lib/php.ini ext=`grep '^zend_extension=".*\/ioncube' $PHP_INI` if [ $? -eq 0 ]; then cd {CP_BUILD_DIR}/ioncube* if [ $? -eq 0 ]; then echo "Build IonCube ..." ./cpanel-install cd .. fi fi ext=`grep '^extension="eaccelerator' $PHP_INI` if [ $? -eq 0 ]; then cd {CP_BUILD_DIR}/eaccelerator* if [ $? -eq 0 ]; then echo "Build eaccelerator ..." echo " .. Special handling for eAccelerator: do not use spin lock, buggy" echo " set mm_sem_spinlock=no and mm_sem_ipc=no in config.m4" found=`find . -name "config.m4"` for f in $found do cp $f $f.orig sed -e 's/mm_sem_spinlock=yes/mm_sem_spinlock=no/' -e 's/mm_sem_ipc=yes/mm_sem_ipc=no/' $f.orig > $f if [ "$?" -ne "0" ] ; then echo " sed command error, please try to modify $f manually to avoid using spinlock" fi done ./cpanel-install cd .. fi fi ext=`grep '^extension="suhosin' $PHP_INI` if [ $? -eq 0 ]; then cd {CP_BUILD_DIR}/suhosin* if [ $? -eq 0 ]; then echo "Build suhosin ..." ./cpanel-install cd .. fi fi ext=`grep '^extension="ixed\.' $PHP_INI` if [ $? -eq 0 ]; then cd {CP_BUILD_DIR}/sourceguardian* if [ $? -eq 0 ]; then echo "Build sourceguardian ..." ./cpanel-install cd .. fi fi ext=`grep '^extension=".*homeloader\.' $PHP_INI` if [ $? -eq 0 ]; then cd {CP_BUILD_DIR}/userphp if [ $? -eq 0 ]; then echo "Build homeloader ..." ./configure make install cd .. fi fi ext=`grep '^zend_extension=".*ZendOptimizer\.' $PHP_INI` if [ $? -eq 0 ]; then cd {CP_BUILD_DIR}/zendopt if [ $? -eq 0 ]; then echo "Build Zend Optimizer ..." ./cpanel-install cd .. fi fi cp -p /usr/local/lib/php.ini /usr/local/lib/php.ini-lsbak sed -e "s/^extension_dir/;extension_dir/" /usr/local/lib/php.ini-lsbak > /usr/local/lib/php.ini chmod a+r /usr/local/lib/php.ini echo "copy compiled php binary to litespeed directory" echo "cd /usr/local/bin/" cd /usr/local/bin/ check_errs $? "cannot cd to /usr/local/bin/" if [ -e "lsphp" ] ; then mv lsphp lsphp.bak fi cp {PHP_BUILD_DIR}/php-{PHP_VERSION}/sapi/litespeed/php lsphp check_errs $? "fail to copy lsphp from {PHP_BUILD_DIR}/php-{PHP_VERSION}/sapi/litespeed/php" chmod a+rx lsphp PHP_MAIN_VERSION=`expr "{PHP_VERSION}" : '\([0-9]*\)\.'` #echo "ln -sf lsphp-{PHP_VERSION} lsphp$PHP_MAIN_VERSION" #ln -sf lsphp-{PHP_VERSION} "lsphp$PHP_MAIN_VERSION" #check_errs $? "fail to creat symbolic link" echo "" echo "==============================================" echo "Finished building PHP {PHP_VERSION} with LSAPI" echo "==============================================" echo `date` echo "**COMPLETE**"