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