components/php-5_2/Solaris/configure-sun-webserver
changeset 4073 4f086b95f18c
parent 4071 4b68c2b0134b
child 4074 3b59c13ef5ec
--- a/components/php-5_2/Solaris/configure-sun-webserver	Wed Apr 08 15:18:37 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,948 +0,0 @@
-#!/bin/bash
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
-#
-
-# Helper functions
-function usage {
-    echo ""
-    echo "Usage: This script will update a given Web Server 7 instance's configuration"
-    echo "       files to be able to execute PHP scripts."
-    echo ""
-    echo "This script recognizes following arguments:"
-    echo " --installroot  : Top level Sun Web Server 7 installation location. "
-    echo ""
-    echo " --instancename : Name of Web Server instance (https-php) which should"
-    echo "                  be configured to execute PHP scripts. "
-    echo ""
-    echo " --sapi         : How should PHP runtime be loaded within Web Server 7"
-    echo "                  fastcgi (Default) or NSAPI (Optional). "
-    echo ""
-    exit 1
-}
-
-function parse_arguments
-{
-    until [ $# -eq 0 ]
-    do 
-        cur_arg=$1
-        case $cur_arg in 
-            --installroot=*)
-                install_root="`echo $cur_arg | cut -d= -f2-`"
-                ;;
-            --instancename=*)
-                instance_name="`echo $cur_arg | cut -d= -f2-`"
-                ;;
-            --sapi=*)
-                sapi="`echo $cur_arg | cut -d= -f2-`"
-                ;;
-            *)
-                usage
-                ;;
-        esac
-        shift;
-    done
-}
-
-function try_interactive
-{
-    # Get user response on Web Server 7 installation location and instance name.
-    echo -n "Enter your Web Server installation location : "
-    read input
-    if [ -n "$input" ]; then
-        install_root="$input"
-    fi
-
-    echo -n "Enter your Web Server instance name to configure with PHP runtime: "
-    read input
-    if [ -n "$input" ]; then
-        instance_name="$input"
-    fi
-
-	while [ 0 ]; do
-		echo -n "How you would like Sun Web Server 7 to load PHP engine (fastcgi|nsapi) [fastcgi]: "
-		read input
-		if [ -z "$input" ]; then
-			sapi="fastcgi"
-		else
-			sapi=$input
-		fi
-		if [ -n "$sapi" ] && [ $sapi = "fastcgi" -o $sapi = "nsapi" ]; then
-			break
-		fi
-	done
-    return 1;
-}
-
-function validate_arguments
-{
-    if [ ! -d "$install_root" ] || [ ! -x "$install_root/lib/webservd" ]; then
-        echo ""
-        echo "Warning: Unable to find valid Web Server installation under $install_root"
-        echo "Please try again by providing a valid Web Server 7 installation location."
-        usage
-    fi
-
-    if [ ! -d "$install_root" ] || [ ! -x "$install_root/lib/webservd" ]; then
-        echo ""
-        echo "Warning: Unable to find valid Web Server installation under $install_root"
-        echo "Please try again by providing a valid Web Server 7 installation location."
-        usage
-    fi
-
-    if [ -n "$sapi" ] && [ $sapi != "fastcgi" -a $sapi != "nsapi" ]; then
-        echo ""
-        echo "Error: Invalid SAPI option is provided.Valid SAPI argument is either 'fastcgi' or 'nsapi'"
-        echo "Please try again by providing a valid SAPI as argument."
-        usage
-    fi
-
-    return 1;
-}
-
-function generate_tempfile
-{
-    template="tmp.XXXXXXXXXX";
-    if [ -x "/bin/mktemp" ]; then
-        temp_file="`/bin/mktemp`"
-    elif [ -x "/usr/bin/mktemp" ]; then
-        temp_file="`/usr/bin/mktemp`"
-    fi
-    if [ ! -f $temp_file ]; then
-        temp_file="/tmp/ws7_php_configure.$$"
-        touch $temp_file 
-        chmod 600 $temp_file
-    fi
-
-    return 1;
-}
-
-function generate_configure
-{
-	if [ "$OSNAME" = "SunOS" ]; then
-		tail +${perl_start_line} $PROGRAM_NAME > $temp_file
-	elif [ "$OSNAME" = "Linux" ]; then
-        start_line=${perl_start_line}
-        total_line=`wc -l $PROGRAM_NAME | awk '{print $1}' 2>/dev/null`
-        few_lines=$(($total_line - $start_line))
-		tail -${few_lines} $PROGRAM_NAME > $temp_file
-	fi
-    chmod 500 $temp_file
-}
-
-function invoke_configure
-{
-    # Setup environment 
-    if [ -f "$install_root/lib/wsenv" ]; then
-        source  $install_root/lib/wsenv
-        if [ ! -d "${WS_INSTANCEROOT}/${instance_name}" ]; then
-            echo "Warning: Unable to find instance:'$instance_name' under $WS_INSTANCEROOT"
-            echo "         Please try again by providing a valid instance name."
-            exit 1;
-        fi
-    fi
-
-	# Special case, if it is NSAPI
-	if [ "$sapi" = "nsapi" ]; then
-        mkdir -p "$install_root/plugins/webstack-php"
-        ln -sf "<<INSTALL_DIR>>/nsapi/libphp5.so" "$install_root/plugins/webstack-php/libphp5.so"
-	fi
-
-    # Invoke script to configure PHP runtime.
-	if [ "$sapi" = "nsapi" ]; then
-		PHPROOT="<<INSTALL_DIR>>"
-		PHPCONFROOT="<<NSAPI_CONF_DIR>>"
-		PHPCONFROOT_SCANDIR="<<ZTS_MODULES_CONF_DIR>>"
-	else
-		PHPROOT="<<INSTALL_DIR>>"
-		PHPCONFROOT="<<CONF_DIR>>"
-		PHPCONFROOT_SCANDIR="<<MODULES_CONF_DIR>>"
-	fi
-
-    ${WS_PERL}/perl -I ${WS_PERL} -I ${WS_PERL}/lib -I ${WS_PERL}/lib/site_perl $temp_file  \
-	-installroot=${WS_INSTALLROOT} -instanceroot=${WS_INSTANCEROOT} -instancename=$instance_name \
-	-sapi=$sapi -phproot="${PHPROOT}" \
-	-phpconfroot="${PHPCONFROOT}" -phpmodulesconfroot="${PHPCONFROOT_SCANDIR}"
-
-	status=$?
-	if [ $status -eq 0 ]; then
-		if [ -f $temp_file ]; then
-			rm -f $temp_file
-		fi
-    elif [ $status -ne 0 ]; then
-        echo "Unable to successfully setup PHP within Web Server 7"
-        exit 1
-    fi
-}
-
-#-------------------------------------------------------------------------------
-#####
-# Main
-#####
-PATH=/bin:/usr/bin:/usr/gnu/bin:/usr/sfw/bin
-export PATH
-
-# Global variables.
-OSNAME="`uname -s`"
-PHPROOT="<<INSTALL_DIR>>"
-PHPCONFROOT="<<CONF_DIR>>"
-PHPCONFROOT_SCANDIR="<<MODULES_CONF_DIR>>"
-PROGRAM_NAME="$0"
-install_root=""
-instance_name=""
-sapi="fastcgi"
-temp_file=""
-
-# This below line need to point to the start of embedded perl script.
-perl_start_line=245
-
-echo "This script will update a given Web Server 7 instance's configuration"
-echo "files to be able to execute PHP scripts."
-echo ""
-
-# Verify if the program is called with necessary arguments. 
-if [ -n "$1" ]; then
-    parse_arguments $@;
-else
-    # Invoked with no arguments. Try interactive.
-    try_interactive
-fi
-
-validate_arguments
-
-generate_tempfile
-
-generate_configure
-
-invoke_configure
-
-exit 0
-
-#---------------------EOF-------------------------------------------------------
-
-# Helper Script to configure PHP runtime environment within Web Server 7
-
-use XML::Simple;
-use File::Basename;
-use English;
-use strict;
-
-our $INSTANCE_ROOT = undef;
-our $INSTALL_ROOT = undef;
-our $INSTANCE_NAME = undef;
-our $PHP_ROOT = "";
-our $PHP_CONF_ROOT = "";
-our $PHP_MODULES_CONF_ROOT = "";
-our $SAPI = undef;
-our $MIME_TYPES_FILES = [];
-our $OBJ_CONF_FILES = [];
-our $SERVER_64BIT_MODE = undef;
-
-my $phpSoName;
-if (isWindows()) {
-   $phpSoName = "php5nsapi.dll";
-} else {
-   $phpSoName = "libphp5.so";
-}
-
-my $fastCGISoName;
-if (isWindows()) {
-    $fastCGISoName = "fastcgi.dll";
-} else {
-    $fastCGISoName = "libfastcgi.so";
-}
-
-main();
-
-sub main {
-    getCommandOptions();
-    processServerXml();
-    checkFilesWritable();
-    processMagnusConf();
-    processObjConf();
-    processMimeTypes();
-    printResult();
-}
-
-# -----------------------------------------------------------------------------
-# getCommandOptions
-# Process the command line options
-# -----------------------------------------------------------------------------
-
-sub getCommandOptions {
-    for (my $counter=0; $#ARGV >= $counter; $counter++) {
-        my $argument    = $ARGV[$counter];
-        
-        if ($argument =~ /^-installroot=/i) {
-            $INSTALL_ROOT = substr($argument, length("-installroot="));
-        }        
-        if ($argument =~ /^-instanceroot=/i) {
-            $INSTANCE_ROOT = substr($argument, length("-instanceroot="));
-        }
-        if ($argument =~ /^-phproot=/i) {
-            $PHP_ROOT = substr($argument, length("-phproot="));
-        }
-        if ($argument =~ /^-phpconfroot=/i) {
-            $PHP_CONF_ROOT = substr($argument, length("-phpconfroot="));
-        }
-        if ($argument =~ /^-phpmodulesconfroot=/i) {
-            $PHP_MODULES_CONF_ROOT = substr($argument, length("-phpmodulesconfroot="));
-        }
-        if ($argument =~ /^-instancename=/i) {
-            $INSTANCE_NAME = substr($argument, length("-instancename="));
-        }
-        if ($argument =~ /^-sapi=/i) {
-            $SAPI = substr($argument, length("-sapi="));
-        }
-    }
-    if ((!defined $PHP_CONF_ROOT) || ($PHP_CONF_ROOT eq "")) {
-        $PHP_CONF_ROOT = $PHP_ROOT;
-    }
-    
-    if ((not defined $INSTANCE_NAME) or ($INSTANCE_NAME !~ m/\S+/)) {
-        printUsage();
-    }
-    
-    exit 1 unless defined isValidFile("$INSTANCE_ROOT/$INSTANCE_NAME/config");
-}
-
-# -----------------------------------------------------------------------------
-# migrateObjConf
-# Migrate obj.conf file to php 1.1
-# -----------------------------------------------------------------------------
-
-sub migrateObjConf {
-    my $objConfFile = shift;
-    my $pContents = shift;
-    my $tmpObjConfStatus = 1;
-
-    return undef unless ($objConfFile);
-    if ((not -f $objConfFile or ref($pContents) != "ARRAY")) {
-        return undef;
-    }
-
-    my $tmpObjConfFile = "$objConfFile"."tmp";
-    my $update_reqd = undef;
-    local *TMPOBJ;
-
-    my $newLibPath = "$PHP_ROOT/lib";
-    my $newLibPath64 = "$PHP_ROOT/lib/64";
-
-    for (my $i = 0; $i < $#{@{$pContents}}; $i++) {
-        my $pLine = \$pContents->[$i];
-        next if ($$pLine =~ /^\#/); #ignore comments;
-        next if (isWindows());
-        if ($$pLine =~ m@(.*\s+app-path=['"])(\S+)\s*(['"].*)@) {
-            my ($tmp, $tmp1, $tmp2, $tmp3);
-            $tmp1 = $1; $tmp2 = $2; $tmp3 = $3;
-
-            $tmp2 =~ s@$PHP_ROOT/bin/php@$PHP_ROOT/bin/php-cgi@;
-            $tmp = $tmp1.$tmp2.$tmp3."\n";
-            $pContents->[$i] = $tmp;
-            $update_reqd = 1;
-        }
-        elsif ($$pLine =~ m@(.*\s+app-env=['"])(\S+)(=)(\S+)(['"].*)@) {
-            my ($tmp, $tmp1, $tmp2, $tmp3, $tmp4, $tmp5);
-            $tmp1 = $1; $tmp2 = $2; $tmp3 = $3; $tmp4 = $4; $tmp5 = $5;
-
-            if (($tmp2 =~ m@LD_LIBRARY_PATH@) or ($tmp2 =~ m@LD_LIBRARY_PATH_64@)) {
-                if ($tmp4 =~ m@$PHP_ROOT/64@) {
-                    $tmp4 =~ s@$PHP_ROOT/64@$newLibPath64@g;
-                }
-                elsif ($tmp4 =~ m@$PHP_ROOT/64([:].*)@) {
-                    $tmp4 =~ s@$PHP_ROOT/64(:.*)@$newLibPath64$1@g;
-                } 
-                elsif ($tmp4 =~ m@$PHP_ROOT([:].*)@) {
-                    $tmp4 =~ s@$PHP_ROOT(:.*)@$newLibPath$1@g;
-                }
-                elsif ($tmp4 =~ m@$PHP_ROOT@) {
-                    $tmp4 =~ s@$PHP_ROOT@$newLibPath@g;
-                }
-            }
-            elsif ($tmp2 =~ m@PHP_FCGI_MAX_REQUEST@) {
-              $tmp2 =~ s@PHP_FCGI_MAX_REQUEST@PHP_FCGI_MAX_REQUESTS@g;
-              $tmp4 =~ s@200@2000@;
-            }
-            $tmp = $tmp1.$tmp2.$tmp3.$tmp4.$tmp5."\n";
-            $pContents->[$i] = $tmp;
-            $update_reqd = 1;
-        }
-    }
-
-    if ($update_reqd) {
-        open(TMPOBJ,">$tmpObjConfFile") or $tmpObjConfStatus = undef;
-        if (defined $tmpObjConfStatus) {                
-            for (my $i = 0; $i < $#{@{$pContents}}; $i++) {
-                my $line = $pContents->[$i];
-                print TMPOBJ $line;
-            }
-            print "UPDATED: $objConfFile \n";
-            close(TMPOBJ);
-            unlink("$objConfFile");
-            rename("$tmpObjConfFile", "$objConfFile");
-            chmod(0600, "$objConfFile");
-            return 2;
-        }
-    }
-
-    return 1;
-}
-
-# -----------------------------------------------------------------------------
-# processServerXml
-# Parse the server.xml and get all the mime files and object files
-# -----------------------------------------------------------------------------
-
-sub processServerXml {
-    my $file = undef;
-    my $serverXml = "$INSTANCE_ROOT/$INSTANCE_NAME/config/server.xml";
-    
-    my $config = eval{XMLin("$serverXml", forcearray=>1, keyattr=>[])};
-    if ($@) {
-        print("\nERROR: Problem parsing the $serverXml. Not a valid xml file. \n\n");
-        exit 1;
-    }
-    
-    #get the server level mime file
-    $file = $config->{"mime-file"}->[0];
-    if (defined $file) {
-        $file = getValidAbsoluteFilePath($file);
-        if (defined $file) {
-            push (@$MIME_TYPES_FILES, $file); 
-        }
-    }        
-
-    # get the server platform mode
-    my $mode = $config->{"platform"}->[0];
-    if (defined $mode) {
-        if ($mode == "64") {
-            $SERVER_64BIT_MODE = "64";
-        }
-    }
-        
-    for (my $vsCounter = 0; ${config}->{"virtual-server"}->[$vsCounter]; $vsCounter++) {
-        my $virutalServerElement = ${config}->{"virtual-server"}->[$vsCounter];
-        #get the virtual server level mime files
-        for (my $mimeTypescounter = 0; ${virutalServerElement}->{"mime-file"}->[$mimeTypescounter]; $mimeTypescounter++) {
-            $file = ${virutalServerElement}->{"mime-file"}->[$mimeTypescounter];
-            $file = getValidAbsoluteFilePath($file);
-            if (defined $file) {
-                push (@$MIME_TYPES_FILES, $file);
-            }
-        }
-        #get the virtual server level object files       
-        for (my $objectFilecounter = 0; ${virutalServerElement}->{"object-file"}->[$objectFilecounter]; $objectFilecounter++) {
-            $file = ${virutalServerElement}->{"object-file"}->[$objectFilecounter];
-            $file = getValidAbsoluteFilePath($file);
-            if (defined $file) {
-                push (@$OBJ_CONF_FILES, $file);
-            }
-        }        
-    }
-    
-    #Default is mime.types
-    if (@$MIME_TYPES_FILES < 1) {
-        push (@$MIME_TYPES_FILES, "$INSTANCE_ROOT/$INSTANCE_NAME/config/mime.types");
-    }
-    
-    #Default is obj.conf
-    if (@$OBJ_CONF_FILES < 1) {
-        push (@$OBJ_CONF_FILES, "$INSTANCE_ROOT/$INSTANCE_NAME/config/obj.conf");
-    }    
-}
-
-# -----------------------------------------------------------------------------
-# processMagnusConf
-# Append the MAGNUS_CONF_APPEND_STRING value at the end of magnus.conf file.
-# -----------------------------------------------------------------------------
-
-sub processMagnusConf {
-    my $magnusConfFile = "$INSTANCE_ROOT/$INSTANCE_NAME/config/magnus.conf";
-    my $magnusConfStatus = 1;
-
-    if (defined isValidFile($magnusConfFile)) 
-    {
-        # Get the current File Stat.
-        my @statInfo = stat $magnusConfFile;
-
-        # Verify if the changes already exist.
-        if (open(MAGNUS_R,"<$magnusConfFile")) {
-            my @contents = <MAGNUS_R>;
-            foreach (@contents) {
-                next if (/^\#/); #ignore comments;
-                if ((isNSAPI()) and (/shlib(.*)$phpSoName(.*)/g)) {
-                    close(MAGNUS_R);
-                    return 1;
-                } elsif ((not isNSAPI()) and (/shlib(.*)$fastCGISoName(.*)/g)) {
-                    close(MAGNUS_R);
-                    return 1;
-                }
-            }
-            close(MAGNUS_R);
-        }
-        open(MAGNUS,">>$magnusConfFile") or $magnusConfStatus = 0;
-
-        if ($magnusConfStatus == 1) {
-            addToMagnusConf(\*MAGNUS);
-            print "\n\nUPDATED: $magnusConfFile \n";
-        } else {
-            print "\nERROR: Unable to write $magnusConfFile. \n\n";
-            close(MAGNUS);
-            exit 1;
-        }
-        close(MAGNUS);
-        chown $statInfo[4], $statInfo[5], $magnusConfFile;
-    }
-}
-
-# -----------------------------------------------------------------------------
-# processObjConf
-# Append the OBJ_CONF_APPEND_STRING value after the <object name="default" 
-# directive in all object files.
-# -----------------------------------------------------------------------------
-
-sub processObjConf {
-    while(scalar(@$OBJ_CONF_FILES) > 0) {
-        my $objConfFile = pop(@$OBJ_CONF_FILES);
-        my $objConfStatus = 1;
-        my $tmpObjConfStatus = 1;
-
-        if (defined isValidFile($objConfFile)) 
-        {
-            # Get the current File Stat.
-            my @statInfo = stat $objConfFile;
-
-            # Verify if the changes already exist.
-            open(OBJ,"<$objConfFile") or $objConfStatus = undef;
-            if (defined $objConfStatus) {
-                my @lines = <OBJ>;
-                my $escape_path = $PHP_ROOT;
-                $escape_path =~ s/\/(\w)/\\\/$1/g;
-                $escape_path =~ s/\\(\w)/\/$1/g;
-                my $contents = join("",@lines);
-                my $already_configured = undef;
-                if ((isNSAPI()) and ($contents =~ m/
-                        \s*Service\s+type="magnus-internal\/php"\s+fn="php5_execute"
-                        /mx)) {
-                    close(OBJ);
-                    $already_configured = 1;
-                }
-                if ((not isNSAPI()) and (($contents =~ m/
-                        \s*Service\s+type=[\"]magnus-internal\/php[\"]
-                        [\r\n]+
-                        \s*fn=[\"]responder-fastcgi[\"]
-                        [\r\n]+
-                        \s*app-path=[\"](.*)[\"]
-                        [\r\n]+
-                        /mx) and ($1 =~ m@$escape_path@))) {
-                    close(OBJ);
-                    $already_configured = 1;
-                    # migrate existing obj.conf configurations.
-                    &migrateObjConf($objConfFile, \@lines);
-                }
-
-                next if ($already_configured);
-
-                # Create a new obj.conf
-                my $tmpObjConfFile = "$objConfFile"."tmp";
-                open(TMPOBJ,">$tmpObjConfFile") or $tmpObjConfStatus = undef;
-                if (defined $tmpObjConfStatus) {                
-                    if (@lines) {                
-                        foreach my $line (@lines) {
-                            if (($line =~ /^<Object/i) && 
-                                (($line =~ /name=default>/i) || 
-                                ($line =~ /name=default\s/i) || 
-                                ($line =~ /name="default"/i))) {
-                                print TMPOBJ $line;
-                                addToObjConf(\*TMPOBJ);
-                                print "UPDATED: $objConfFile \n";
-                            } elsif ($line =~ /PathCheck\s+fn\s*=\s*(\S+)\s+(\S+)\s*=\s*(\S+)$/) {
-                                my $funcName = $1;
-                                my $valueName = $2;
-                                my $values = $3;
-                                if (($funcName =~ /find-index/) and ($valueName =~ /index-names/)) {
-                                    $values =~ s/[\"](\S+)[\"]/$1/;
-                                    $values = "$1".",index.php";
-                                    my $newLine = <<__UP_TO_THIS_POINT_;
-PathCheck fn=$funcName $valueName=\"$values\"
-__UP_TO_THIS_POINT_
-                                    print TMPOBJ $newLine;
-                                }
-                                else {
-                                    print TMPOBJ $line;
-                                }
-                            } else {
-                                print TMPOBJ $line;
-                            }
-                        }
-                    }
-                } else {
-                    print "\nERROR: Unable to write $objConfFile \n\n";
-                    close(TMPOBJ);
-                    close(OBJ);
-                    unlink("$tmpObjConfFile");
-                    exit 1;
-                }
-                close(TMPOBJ);
-                close(OBJ);
-                unlink("$objConfFile");
-                rename("$tmpObjConfFile", "$objConfFile");
-                chmod(0600, "$objConfFile");
-                chown $statInfo[4], $statInfo[5], $objConfFile;
-            }
-        }
-    }
-}
-
-# -----------------------------------------------------------------------------
-# processMimeTypes
-# Append the MIME_TYPES_APPEND_STRING value at the end of 
-# all the mime types file.
-# -----------------------------------------------------------------------------
-
-sub processMimeTypes {
-    while(scalar(@$MIME_TYPES_FILES) > 0) {
-        my $mimeTypesFile = pop(@$MIME_TYPES_FILES);
-        my $mimeTypesStatus = 1;
-
-        if (defined isValidFile($mimeTypesFile)) {
-
-            # Get the current File Stat.
-            my @statInfo = stat $mimeTypesFile;
-
-            # Verify if the changes already exist.
-            if (open(MIME_R,"<$mimeTypesFile")) {
-                my @contents = <MIME_R>;
-                for (my $i = $#contents; $i > 0; $i--) {
-                    if ($contents[$i] =~ /magnus-internal\/php/g) {
-                        close(MIME_R);
-                        return 1;
-                    }
-                }
-                close(MIME_R);
-            }
-            open(MIME,">>$mimeTypesFile") or $mimeTypesStatus = undef;
-            if (defined $mimeTypesStatus) {
-                addToMimeTypes(\*MIME);
-                print "UPDATED: $mimeTypesFile \n";
-            } else {
-                print "\nERROR: Unable to write $mimeTypesFile. \n\n";
-                close(MIME);
-                exit 1;
-            }
-            close(MIME);
-            chown $statInfo[4], $statInfo[5], $mimeTypesFile;
-        }        
-    }        
-}
-
-# -----------------------------------------------------------------------------
-# addMagnusConfEntry
-# Add the required magnus conf entry
-# -----------------------------------------------------------------------------
-sub addToMagnusConf {
-
-    my $entry;
-    my $FILENAME = shift;
-    my $phpNsapi = $phpSoName; 
-
-    if (isNSAPI()) {
-
-        $entry = <<__UP_TO_THIS_POINT_;
-
-Init fn="load-modules" shlib="$phpNsapi" shlib_flags="global|now"
-    funcs="php5_init,php5_close,php5_execute,php5_auth_trans"
-Init fn="php5_init"
-	php_ini="$PHP_CONF_ROOT"
-	php_ini_scandir="$PHP_MODULES_CONF_ROOT"
-	errorString="PHP failed to initialize."
-
-__UP_TO_THIS_POINT_
-
-    } else {    # fastcgi
-
-        $entry = <<__UP_TO_THIS_POINT_;
-
-Init fn="load-modules" shlib="$fastCGISoName"
-
-__UP_TO_THIS_POINT_
-
-    }
-
-    print $FILENAME $entry;    
-}
-
-# -----------------------------------------------------------------------------
-# addMimeTypesEntry
-# Add the required mime types entry
-# -----------------------------------------------------------------------------
-sub addToMimeTypes {
-    my $FILENAME = shift;
-    my $entry = <<__UP_TO_THIS_POINT_;
-
-type=magnus-internal/php                         exts=php,php3,php4,php5
-__UP_TO_THIS_POINT_
-    print $FILENAME $entry;    
-}
-
-# -----------------------------------------------------------------------------
-# addObjConfEntry
-# Add the required obj conf entry
-# -----------------------------------------------------------------------------
-sub addToObjConf {
-    # setup 
-    my $FILENAME = shift;
-    # On windows, replace \ with / in paths
-    my $l_php_root = $PHP_ROOT;
-    if (isWindows()) {
-        $l_php_root =~ s/\\/\//g;
-    }
-
-    my $newLibPath = "$l_php_root/lib";
-    my $newLibPath64 = "$l_php_root/lib/64";
-    my $childs = &detectDefaultChildren();
-
-    my $unixFastCGIEntry = <<__UNIX_FASTCGI_ENTRY_
-<If -f \$path>
-Service type="magnus-internal/php"
-    fn="responder-fastcgi"
-    app-path="$l_php_root/bin/php-cgi"
-    bind-path="localhost:3101"
-    app-env="PHPRC=$PHP_CONF_ROOT"
-    app-env="PHP_INI_SCANDIR=$PHP_MODULES_CONF_ROOT"
-    app-env="PHP_FCGI_CHILDREN=$childs"
-    app-env="PHP_FCGI_MAX_REQUESTS=2000"
-    app-env="FCGI_WEB_SERVER_ADDRS=127.0.0.1"
-    bucket="php-bucket"
-</If>
-<Else>
-Service type="magnus-internal/php" fn="set-variable" error="404"
-</Else>
-
-__UNIX_FASTCGI_ENTRY_
-;
-
-    my $windowsFastCGIEntry = <<__WINDOWS_FASTCGI_ENTRY_
-
-Service type="magnus-internal/php"
-    fn="responder-fastcgi"
-    app-path="$l_php_root/php-cgi.exe"
-    bind-path="$INSTANCE_NAME--php_cgi"
-    app-env="PHPRC=$l_php_root"
-    app-env="PHP_FCGI_CHILDREN=$childs"
-    app-env="PHP_FCGI_MAX_REQUESTS=2000"
-    bucket="php-bucket"
-
-__WINDOWS_FASTCGI_ENTRY_
-;
-
-    my $nsapiEntry = <<__NSAPI_ENTRY_
-
-Service type="magnus-internal/php" fn="php5_execute"
-
-__NSAPI_ENTRY_
-;
-
-    my $entry;
-
-    if (isNSAPI()) {
-        $entry = $nsapiEntry;
-    } else {
-        if (isWindows()) {
-            $entry = $windowsFastCGIEntry;
-        } else {
-            $entry = $unixFastCGIEntry;
-        }
-    }
-
-    print $FILENAME $entry;
-}
-
-# -----------------------------------------------------------------------------
-# isNSAPI
-# Check if SAPI is nsapi
-# -----------------------------------------------------------------------------
-
-sub isNSAPI() {
-    if ($SAPI =~ m/nsapi/i) {
-        return 1;
-    }
-    return 0;
-}
-
-# -----------------------------------------------------------------------------
-# isWindows
-# Check platform
-# -----------------------------------------------------------------------------
-
-sub isWindows() {
-    if ($OSNAME =~ m/WIN/i) {
-        return 1;
-    }
-    return 0;
-}
-
-# -----------------------------------------------------------------------------
-# checkFilesWritable
-# Check all the necessary files writable before adding the entries
-# -----------------------------------------------------------------------------
-
-sub checkFilesWritable {
-    exit 1 unless defined isValidFile("$INSTANCE_ROOT/$INSTANCE_NAME/config/magnus.conf");
-    my @TMP_OBJ_CONF_FILES = @$OBJ_CONF_FILES;
-    my @TMP_MIME_TYPES_FILES = @$MIME_TYPES_FILES;
-
-    while(scalar(@TMP_OBJ_CONF_FILES) > 0) {
-        my $objConfFile = pop(@TMP_OBJ_CONF_FILES);
-        exit 1 unless defined isValidFile("$objConfFile");
-    }
-    while(scalar(@TMP_MIME_TYPES_FILES) > 0) {
-        my $mimeTypesFile = pop(@TMP_MIME_TYPES_FILES);
-        exit 1 unless defined isValidFile("$mimeTypesFile");
-    }
-}
-
-# -----------------------------------------------------------------------------
-# getValidAbsoluteFilePath
-# To get the valid absolute file path
-# -----------------------------------------------------------------------------
-
-sub getValidAbsoluteFilePath {
-    my ($file) = @_;
-    
-    if (defined $file) {
-        my ($fileName,$filePath,$fileNameSuffix) = fileparse("$file");
-        if ($fileName eq $file) {
-            $file = "$INSTANCE_ROOT/$INSTANCE_NAME/config/$fileName";
-        }
-        
-        $file = undef unless defined isValidFile($file);
-    }
-    
-    return $file;
-}  
-
-# -----------------------------------------------------------------------------
-# getValidAbsoluteFilePath
-# Valid file check
-# -----------------------------------------------------------------------------
-
-sub isValidFile {
-    my ($file) = @_;
-    my $status = undef;
-    
-    if (-e "$file") {
-        if (-w "$file") {
-            $status = 1; 
-        } else {
-            print "\nERROR: $file is not writable. \n\n";
-            exit 1;
-        }
-    } else {
-        print "\nERROR: $file not found, $! \n\n";
-        exit 1;
-    }
-    
-    return $status;
-}
-
-# -----------------------------------------------------------------------------
-# detectDefaultChildren
-# detect current architecture and come up with default values.
-# set default value to a higher value on Niagara based servers.
-# -----------------------------------------------------------------------------
-sub detectDefaultChildren {
-    my $default = 2;
-    if ($OSNAME =~ /SOLARIS/i) {
-        if (-x "/bin/uname") {
-            my $type = qx(/bin/uname -m);
-            chomp($type);
-            $default *= 3 if ($type =~ /sun4u/i);
-            $default *= 6 if ($type =~ /sun4v/);
-        }
-    }
-    return $default;
-}
-
-# -----------------------------------------------------------------------------
-# printUsage
-# print the usage command
-# -----------------------------------------------------------------------------
-
-sub printUsage {
-    print "This script will configure a web server instance to run PHP scripts\n" .
-          "either as FastCGI or NSAPI \n".
-          "usage : \n" .
-          "     setupPHP -instancename=<instance name> [-sapi=fastcgi|nsapi]\n" .
-          "Examples:\n" .
-          "\n".
-          "This below example configures Web Server to run PHP in FastCGI mode (Default)\n".
-          "     setupPHP -instancename=https-php\n" .
-          "\n".
-          "This below example configures Web Server to run PHP in NSAPI mode\n".
-          "     setupPHP -instancename=https-php -sapi=nsapi\n";
-    exit 1;
-}
-
-# -----------------------------------------------------------------------------
-# printResult
-# print the post setup steps
-# -----------------------------------------------------------------------------
-
-sub printResult {
-    #remove "https-" from the instance name and use it as the config name
-    my $configName = undef;
-    $configName = $INSTANCE_NAME;
-    $configName = substr($INSTANCE_NAME, 6) if ($INSTANCE_NAME =~ /^https/);
-    my $result = <<__UP_TO_THIS_POINT_;
-    
-Setup was sucessful.
---------------------
-
-The following steps are necessary to make the changes to all the nodes.
-
-(1) Start the admin server
-
-    $INSTALL_ROOT/admin-server/bin/startserv
-
-(2) Connect to the admin server using wadm command
-
-    $INSTALL_ROOT/bin/wadm [--user=admin-user] [--password-file=admin-pswd-file] [--host=admin-host] [--port=admin-port]
-
-(3) Pull the modified config from the node to config store 
-    using the following command in wadm console:
-
-    pull-config --config=$configName nodehost
-    
-    For Example: If the host name for the node is xyz.com then enter the command like,
-    
-    pull-config --config=$configName xyz.com
-
-(4) Deploy the new changes to all nodes using 
-    the following command in wadm console:
-
-    deploy-config $configName 
-
-
-__UP_TO_THIS_POINT_
-    print $result;
-}