X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=debian%2Fpostinst;h=14b691b10a2194b1747927501fd4a406d1797b0c;hb=8c965cb57aecb3955fc9b22d76449cc2244a4dbb;hp=25b98041b0ee9d30f9fe42e3fe80ebe52a7ee212;hpb=0afc3c15999bbb2ef281abf83c95649645b7e97c;p=php5-cn.git diff --git a/debian/postinst b/debian/postinst index 25b9804..14b691b 100755 --- a/debian/postinst +++ b/debian/postinst @@ -31,6 +31,7 @@ A2MODEDIR="/etc/apache2/mods-enabled" EXTENSIONS="mysql" PHP5DIR="/etc/php5" PHP5CONFD="/etc/php5/conf.d" +PHP4DIR="/etc/php4" need_restart=0 @@ -51,6 +52,20 @@ phpmemlimit () { echo $memlimit } +# phpinivalidate () +# +# Validate php.ini values. +# +phpinivalidate () { + + local ini_file + ini_file="$1" + + awk -F'[[:space:]]*=[[:space:]]*' \ + '/^[[:space:]]*[[:alpha:]_]+[[:space:]]*=[[:space:]]*[[:digit:]]+[MGK]B/ {print $1" = "$2}' \ + "$ini_file" +} + # Disable PHP4 module and enable Apache2 PHP5 module. # @@ -96,6 +111,7 @@ for SAPI in apache2 cli; do cp_mv $ini_file_tmp $ini_file need_restart=1 fi + chmod 644 $ini_file done @@ -121,7 +137,9 @@ for php5ext in $EXTENSIONS; do if [ -f "$ini_file" ]; then - cp_echo "CN: Removing $php5ext extension from file $ini_file" + if egrep -q "$php5ext_re" "$ini_file"; then + cp_echo "CN: Removing $php5ext extension from file $ini_file" + fi cp_check_and_sed "$php5ext_re" \ "/$php5ext_re/d" \ @@ -139,7 +157,7 @@ for php5ext in $EXTENSIONS; do cp_echo "CN: Adding $php5ext extension to file $PHP5CONFD/$php5ext.ini" - printf "# configuration for php %s module\nextension=%s\n" "${php5ext_up}" "${php5ext}" >> "$INITMP" + printf "# configuration for php %s module\nextension=%s.so\n" "${php5ext_up}" "${php5ext}" >> "$INITMP" cp_mv "$INITMP" "$PHP5CONFD/$php5ext.ini" need_restart=1 @@ -157,6 +175,7 @@ for php5ext in $EXTENSIONS; do need_restart=1 fi fi + chmod 644 $PHP5CONFD/$php5ext.ini done @@ -171,12 +190,11 @@ for SAPI in apache2 cli; do if [ ! -d "$PHP5DIR/$SAPI" ]; then continue fi - + + ini_file="$PHP5DIR/$SAPI/php.ini" db_get php5-cn/${SAPI} || true if [ "$RET" = "true" ]; then - ini_file="$PHP5DIR/$SAPI/php.ini" - cp_echo "CN: Checking and enabling some specific parameters in file $ini_file" phplimit="$(phpmemlimit)M" @@ -214,15 +232,69 @@ for SAPI in apache2 cli; do need_restart=1 fi cp_mv "$ini_file_tmp" "$ini_file" - - + chmod 644 "$ini_file" + if [ -e "$ini_file_tmp" ]; then rm -f "$ini_file_tmp" fi fi + + # Validate php.ini values. + if [ -f "$ini_file" ]; then + php5_inivalues="$(phpinivalidate "$ini_file")" + if [ -n "$php5_inivalues" ]; then + db_fset php5-cn/inivalues seen false + db_title php5-cn - konfiguracija za $(echo ${SAPI} | sed 's/a/A/;s/cli/CLI/') + db_subst php5-cn/inivalues php5_sapi $(echo ${SAPI} | sed 's/a/A/;s/cli/CLI/') + db_subst php5-cn/inivalues ini_file "$ini_file" + db_capb escape + db_subst php5-cn/inivalues php5_inivalues "$(echo -n "$php5_inivalues" | debconf-escape -e)" + db_input critical php5-cn/inivalues || true + db_go || true + fi + fi done +# Compare active PHP5 extensions with PHP4 ones, if PHP4 configuration still exists. +# +if [ -d "${PHP4DIR}" ] && [ -f "${PHP4DIR}/apache2/php.ini" ]; then + + phpext_re='^[[:space:]]*extension[[:space:]]*=[[:space:]]*["]{0,1}(.*)\.so["]{0,1}' + + # Get all active PHP4 extensions. + php4_ext="$(find ${PHP4DIR} -type f -name *.ini | + egrep "\/(conf\.d|apache2|cli)\/" | + xargs sed -rn 's/'$phpext_re'/\1/Ip')" || true + + # Get all active PHP5 extensions. + php5_ext="" + if [ -d "${PHP5DIR}" ]; then + php5_ext="$(find ${PHP5DIR} -type f -name *.ini | + egrep "\/(conf\.d|apache2|cli)\/" | + xargs sed -rn 's/'$phpext_re'/\1/Ip')" || true + fi + + # Compare PHP5 <-> PHP4 extensions. + php5_ext_mis="" + for ext in $php4_ext; do + if [ "$(echo $php5_ext | egrep $ext)" = "" ]; then + php5_ext_mis="\n${ext}${php5_ext_mis}" + fi + done + + # Some PHP5 extensions are not active. + if [ -n "$php5_ext_mis" ]; then + db_fset php5-cn/extensions seen false + db_title php5-cn - konfiguracija + db_capb escape + db_subst php5-cn/extensions php5_extensions "${php5_ext_mis#*\n}" + db_input critical php5-cn/extensions || true + db_go || true + fi +fi + + db_stop || true @@ -236,9 +308,9 @@ if [ $need_restart -eq 1 ]; then # Restart Apache2 web server. if [ -x "/etc/init.d/apache2" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then - invoke-rc.d apache2 force-reload || true + invoke-rc.d apache2 restart || true else - /etc/init.d/apache2 force-reload || true + /etc/init.d/apache2 restart || true fi fi else