Code:
#!/bin/bash
# Autor: Knut Herter
# Web : http://www.systemtechnics.de
# Datum : 04-2007
# Tip : Alle 5 Minuten per Cron starten lassen.
## Variablen setzen
# Verzeichnis der Webs
VWEB=/var/www/virtual
# Verzeichnis des FCGI Starters
VCGI=/var/www/fcgi
# Datei mit Domainkonfiguration
CCGI=fcgi-domains.conf
############
#
# Ab hier nicht mehr aendern
#
############
TMPFILE=`mktemp /tmp/fcgi-fix.XXXXXXXX`
#Domainliste
DOMAINLIST=`ls $VWEB`
for DOMAIN in $DOMAINLIST
do
######
# Konfig-File vorhanden ? Ja, ansonsten anlegen
if test ! -f $VCGI/$CCGI; then
touch $VCGI/$CCGI;
fi
# Wenn Domain auch im php-Starter-Verzeichnis existiert
if test -d $VCGI/$DOMAIN; then
######
# Berechtigung (User) ermitteln
RVWEB=`stat -c%U $VWEB/$DOMAIN`
RVCGI=`stat -c%U $VCGI/$DOMAIN`
# Wenn ein File .php5 im Web-Ordner liegt, soll auf
# php5 umgeschaltet werden
if test -f $VWEB/$DOMAIN/htdocs/.php5; then
chown $RVWEB:$RVWEB $VWEB/$DOMAIN/htdocs/.php5
PHPV=php5
if test -f $VWEB/$DOMAIN/htdocs/.php4; then
rm $VWEB/$DOMAIN/htdocs/.php4 -f
fi
else
PHPV=php4
touch $VWEB/$DOMAIN/htdocs/.php4
chown $RVWEB:$RVWEB $VWEB/$DOMAIN/htdocs/.php4
fi
#Alte, eingestellte PHP Version einlesen
PHPVOLD=`grep +$DOMAIN+ $VCGI/$CCGI|cut -d "=" -f 2`
######
# Wenn sich die PHP-Version seit dem letzten Aufruf geaendert hat
# dann die Verarbeitung starten
if test "$PHPVOLD" != "$PHPV"; then
######
# Starter Dateien schreiben
WFILE=$VCGI/$DOMAIN/php4-fcgi-starter
echo "#!/bin/sh" > $WFILE
echo "# Alle alten PHP Prozesse, die dem Init gehoeren, killen" >> $WFILE
echo "" >> $WFILE
echo "ps ax -F | awk '{ if ( \$3 == \"1\" && \$1 == \"$RVCGI\" && \$12 == \"/usr/bin/$PHPV-cgi\" ) { print \"kill \" \$2 } }' | sh " >> $WFILE
echo "PHPRC=\"/var/www/fcgi/$DOMAIN/$PHPV/\"" >> $WFILE
echo "export PHPRC" >> $WFILE
echo "" >> $WFILE
echo "exec /usr/bin/$PHPV-cgi" >> $WFILE
WFILE=$VCGI/$DOMAIN/php5-fcgi-starter
echo "#!/bin/sh" > $WFILE
echo "# Alle alten PHP Prozesse, die dem Init gehoeren, killen" >> $WFILE
echo "" >> $WFILE
echo "ps ax -F | awk '{ if ( \$3 == \"1\" && \$1 == \"$RVCGI\" && \$12 == \"/usr/bin/$PHPV-cgi\" ) { print \"kill \" \$2 } }' | sh " >> $WFILE
echo "PHPRC=\"/var/www/fcgi/$DOMAIN/$PHPV/\"" >> $WFILE
echo "export PHPRC" >> $WFILE
echo "" >> $WFILE
echo "exec /usr/bin/$PHPV-cgi" >> $WFILE
fi
if test "$PHPVOLD" != "$PHPV"; then
echo -e "php-Version (alt) = $PHPVOLD - php-Version (neu) = $PHPV - \033[1;32m$DOMAIN \033[1;0m"
else
echo -e "php-Version (alt) = $PHPVOLD - php-Version (neu) = $PHPV - $DOMAIN"
fi
######
# aktuelle/neue php Version merken
echo "+$DOMAIN+=$PHPV" >> $TMPFILE
fi
done
# Neue Konfiguration schreiben
cp $TMPFILE $VCGI/$CCGI -f
rm $TMPFILE