#!/bin/sh # # phpwrap.cgi # # This script 'fools' php interpreter so that you can give full URL with parameters # in cron environment. # # Example crontab: # 7 * * * * $HOME/htdocs/protectedsubdir/phpwrap.cgi 'http://yourdomain.com/subdir/whatever.php?abc=1234&ghi=heyhey' >pwlog.txt 2>&1 # # Note that URL is in single quotes. # If the URL contain single quote, somehow, you must escape it with backslash \ # # This script will let you to invoke a php script that needs these parameters and other # env variables to work properly. # You may want to add more env variables as you need. # # You can use this script as cgi, too. (For testing, e.t.c.) # # Example: # http://yourdomain.com/protected/phpwrap.cgi?http://yourdomain.com/sub/whatever.php?a=3&b=5 # # I guess it can be used for reaplacing wasteful url_open local include() # # In place of: # include("http://localhost.yourdomain.com/sub/abc.php?x=1&y=21&z=9") # you can use; # echo `$DOCUMENT_ROOT/protected/phpwrap.cgi -nh 'http://localhost.yourdomain.com/sub/abc.php?x=1&y=21&z=9`' ; # # If you need to process the page again in the current php script, use "eval" instead of "echo". # # Although it invokes additional shell and additional php, it doesn't invoke additional Apache. # So, maybe it uses less resources than local url_open include(). # case "$1" in -nh) NOHEADER=1 shift #echo "shifted:$1" ;; esac case "$HOME" in '') #echo -e "Content-type: text/html\n\n" #echo "Called as CGI -----------HOME=$HOME----" #echo $0 USER=`whoami` HOME="/www/`expr $USER : '\(.\)'`/$USER" case "$QUERY_STRING" in '') TURL=$1 ;; *) TURL=$QUERY_STRING ;; esac ;; *) #echo "Called from cron -----------" TURL=$1 NOHEADER=1 ;; esac DR="$HOME/htdocs" #echo $QUERY_STRING THOST=${TURL#*://} TPATH=/${THOST#*/} TQSTR=${TPATH#*[?]} TPATH=${TPATH%%[?]*} THOST=${THOST%%/*} #echo TURL=$TURL #echo THOST=$THOST #echo TPATH=$TPATH #echo TQSTR=$TQSTR #printenv|sort SCRPATH=$DR$TPATH export QUERY_STRING=$TQSTR export DOCUMENT_ROOT=$DR export GATEWAY_INTERFACE=CGI/1.1 #export HTTPS=on export HTTP_ACCEPT=*/* #export HTTP_ACCEPT_CHARSET=utf-8 #export HTTP_ACCEPT_ENCODING=gzip,deflate export HTTP_ACCEPT_LANGUAGE=en #export HTTP_CONNECTION=close export HTTP_HOST=$THOST #export HTTP_KEEP_ALIVE=300 export HTTP_USER_AGENT='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)' #export ORIG_PATH_INFO="$TPATH" #export ORIG_PATH_TRANSLATED="$SCRPATH" #export ORIG_SCRIPT_FILENAME=/powweb/web/cgi-bin/php4 #export ORIG_SCRIPT_NAME=/powweb-bin/php4 export PATH=/usr/local/bin:/usr/bin:/bin #export PATH_INFO= export PATH_TRANSLATED=$SCRPATH export PHPRC="$DR" #export REDIRECT_STATUS=200 #export REDIRECT_URL="$TPATH" export REQUEST_METHOD=GET export REQUEST_URI="$TPATH?$QUERY_STRING" export SCRIPT_FILENAME="$SCRPATH" export SCRIPT_NAME="$TPATH" #export SCRIPT_URI=$TURL #export SCRIPT_URL=$TPATH export SERVER_ADDR=66.152.98.33 export SERVER_ADMIN='webmaster@'$THOST export REMOTE_ADDR=123.123.123.123 export REMOTE_PORT=123456 export SERVER_NAME=$THOST export SERVER_PORT=80 export SERVER_PROTOCOL=HTTP/1.1 export SERVER_SOFTWARE='Apache/1.3.33 (Unix) FrontPage/5.0.2.2635 mod_ssl/2.8.22 export OpenSSL/0.9.7d PowWeb/1.1' export UNIQUE_ID=QhdCIUKYYiAABCaG-@0 #printenv|sort #export -p cd ${SCRPATH%/*} #pwd #echo "/usr/local/bin/php $SCRPATH" case "$NOHEADER" in '') # Called via cgi /usr/local/bin/php "$SCRPATH" 2>&1 ;; *) # Called via cron. Remove http headers. ERR=$HOME/phpwrap.err /usr/local/bin/php -f "$SCRPATH" 2>$ERR |sed -e '1,/^[[:cntrl:]]*$/d' 2>>$ERR cat $ERR ;; esac # END