Change permissions on php.ini files to 644.
[php4-cn.git] / debian / postinst
1 #!/bin/sh
2
3 set -e
4
5 [ "$DEBIAN_SCRIPT_DEBUG" ] && set -vx
6
7 case "$1" in
8         configure)
9         # continue below
10         ;;
11
12         abort-upgrade|abort-remove|abort-deconfigure)
13         exit 0
14         ;;
15
16         *)
17         echo "postinst called with unknown argument \`$1'" >&2
18         exit 0
19         ;;
20 esac
21
22
23 # Load debconf
24 . /usr/share/debconf/confmodule
25
26 # Include CARNet functions
27 . /usr/share/carnet-tools/functions.sh
28
29 PKG="php4-cn"
30 A2MODEDIR="/etc/apache2/mods-enabled"
31 EXTENSIONS="mysql"
32 PHP4DIR="/etc/php4"
33 PHP4CONFD="/etc/php4/conf.d"
34
35 need_restart=0
36
37
38 # phpmemlimit ()
39 #
40 #   Calculate memory size for PHP memory_limit option.
41 #
42 phpmemlimit () {
43
44     local memtotal memlimit
45     memtotal=`awk 'tolower($1) == "memtotal:" { printf("%i", $2/1024); }' /proc/meminfo`
46
47     if [ $memtotal -lt 512 ]; then memlimit=16; fi
48     if [ $memtotal -ge 512 ]; then memlimit=32; fi
49     if [ $memtotal -gt 1024 ]; then memlimit=64; fi
50
51     echo $memlimit
52 }
53
54
55 # Disable PHP5 module and enable Apache2 PHP4 module.
56 #
57 if [ -e /etc/apache2/apache2.conf ]; then
58         if [ -e "$A2MODEDIR/php5.load" ]; then
59                 cp_echo "CN: Disabling PHP5 module for Apache2 web server"
60                 a2dismod php5 >/dev/null || true
61                 need_restart=1
62         fi
63         if [ ! -e "$A2MODEDIR/php4.load" ] || [ ! -e "$A2MODEDIR/php4.conf" ]; then
64                 cp_echo "CN: Enabling PHP4 module for Apache2 web server"
65                 a2enmod php4 >/dev/null || true
66                 need_restart=1
67         fi
68 fi
69
70
71 # Check for PHP4 SAPI directories and configuration files.
72 #
73 for SAPI in apache2 cli; do
74
75         if [ ! -d "$PHP4DIR/$SAPI" ]; then
76                 cp_echo "CN: Creating configuration directory $PHP4DIR/$SAPI/"
77                 mkdir -p $PHP4DIR/$SAPI/
78         fi
79
80         ini_file="$PHP4DIR/$SAPI/php.ini"
81
82         if [ ! -f "$ini_file" ]; then
83         
84                 cp_echo "CN: Generating configuration file $ini_file"
85         
86                 ini_file_tmp=`mktemp $ini_file.tmp.XXXXXX`
87                 if [ "$SAPI" = "cli" ]; then
88                     if [ -f "/usr/share/php4/php.ini-dist.cli" ]; then
89                         cat /usr/share/php4/php.ini-dist.cli > $ini_file_tmp
90                     fi
91                 else
92                     if [ -f "/usr/share/php4/php.ini-dist" ]; then
93                         cat /usr/share/php4/php.ini-dist > $ini_file_tmp
94                     fi
95                 fi
96                 cp_mv $ini_file_tmp $ini_file
97                 need_restart=1
98         fi
99         chmod 644 $ini_file
100 done
101
102
103 # Check for /etc/php4/conf.d/ directory.
104 #
105 if [ ! -d "$PHP4CONFD" ]; then
106         cp_echo "CN: Creating configuration directory $PHP4CONFD"
107         mkdir -p $PHP4CONFD/
108 fi
109
110
111 # Check if PHP4 extensions are enabled.
112 #
113 for php4ext in $EXTENSIONS; do
114
115         php4ext_re="^[[:space:]]*extension[[:space:]]*=[[:space:]]*$php4ext\.so"
116
117         # Remove extension entry from /etc/php4/(apache2|cli).ini
118         # configuration files.
119         for SAPI in apache2 cli; do
120
121                 ini_file="$PHP4DIR/$SAPI/php.ini"
122
123                 if [ -f "$ini_file" ]; then
124
125                         cp_echo "CN: Removing $php4ext extension from file $ini_file"
126
127                         cp_check_and_sed "$php4ext_re" \
128                                 "/$php4ext_re/d" \
129                                 "$ini_file" && need_restart=1 || true
130                 fi
131         done
132
133         # Check extension configuration in /etc/php4/conf.d/ directory.
134         if [ ! -f "$PHP4CONFD/$php4ext.ini" ]; then
135
136                 cp_echo "CN: Creating configuration file $PHP4CONFD/$php4ext.ini"
137                 
138                 php4ext_up=`echo $php4ext | tr [:lower:] [:upper:] | sed 's/Y/y/'`
139                 INITMP=`mktemp $PHP4CONFD/$php4ext.ini.tmp.XXXXXX`
140
141                 cp_echo "CN: Adding $php4ext extension to file $PHP4CONFD/$php4ext.ini"
142                 
143                 printf "# configuration for php %s module\nextension=%s.so\n" "${php4ext_up}" "${php4ext}" >> "$INITMP"
144                 cp_mv "$INITMP" "$PHP4CONFD/$php4ext.ini"
145                 
146                 need_restart=1
147         else
148
149                 if ! grep -q "$php4ext_re" "$PHP4CONFD/$php4ext.ini"; then
150
151                         cp_echo "CN: Adding $php4ext extension to file $PHP4CONFD/$php4ext.ini"
152                         
153                         INITMP=`mktemp $PHP4CONFD/$php4ext.ini.tmp.XXXXXX`
154                         cat "$PHP4CONFD/$php4ext.ini" > "$INITMP"
155                         echo "extension=$php4ext.so" >> "$INITMP"
156                         cp_mv "$INITMP" "$PHP4CONFD/$php4ext.ini"
157                         
158                         need_restart=1
159                 fi
160         fi
161         chmod 644 $PHP4CONFD/$php4ext.ini
162 done
163
164
165 # Enable some PHP4 tweaks for Apache2 web server (/etc/php4/apache2/php.ini).
166 #
167 #   * upload_max_filesize = 256M
168 #   * post_max_size, memory_limit = depends on system memory, we are using
169 #     phpmemlimit() function.
170 #
171 for SAPI in apache2 cli; do
172
173         if [ ! -d "$PHP4DIR/$SAPI" ]; then
174                 continue
175         fi
176
177         db_get php4-cn/${SAPI} || true
178         if [ "$RET" = "true" ]; then
179         
180             ini_file="$PHP4DIR/$SAPI/php.ini"
181
182             cp_echo "CN: Checking and enabling some specific parameters in file $ini_file"
183         
184             phplimit="$(phpmemlimit)M"
185         
186             if [ -f "$ini_file" ]; then
187
188                 cp_check_and_sed "^[[:space:]]*upload_max_filesize[[:space:]]*=" \
189                         's/^[[:space:]]*upload_max_filesize[[:space:]]*=.*/upload_max_filesize = 256M/' \
190                         "$ini_file" && need_restart=1 || true
191
192                 cp_check_and_sed "^[[:space:]]*post_max_size[[:space:]]*=" \
193                         "s/^[[:space:]]*post_max_size[[:space:]]*=.*/post_max_size = ${phplimit}/" \
194                         "$ini_file" && need_restart=1 || true
195
196                 cp_check_and_sed "^[[:space:]]*memory_limit[[:space:]]*=" \
197                         "s/^[[:space:]]*memory_limit[[:space:]]*=.*/memory_limit = ${phplimit}/" \
198                         "$ini_file" && need_restart=1 || true
199             fi
200
201             ini_file_tmp=`mktemp $ini_file.tmp.XXXXXX`
202             if [ -f "$ini_file" ]; then
203                 cat $ini_file > $ini_file_tmp
204             fi
205
206             if ! egrep -q "^[[:space:]]*upload_max_filesize[[:space:]]*=" $ini_file_tmp; then
207                 echo "upload_max_filesize = 256M" >> "$ini_file_tmp"
208                 need_restart=1
209             fi
210             if ! egrep -q "^[[:space:]]*post_max_size[[:space:]]*=" $ini_file_tmp; then
211                 echo "post_max_size = ${phplimit}" >> "$ini_file_tmp"
212                 need_restart=1
213             fi
214             if ! egrep -q "^[[:space:]]*memory_limit[[:space:]]*=" $ini_file_tmp; then
215                 echo "memory_limit = ${phplimit}" >> "$ini_file_tmp"
216                 need_restart=1
217             fi
218             cp_mv "$ini_file_tmp" "$ini_file"
219
220             if [ -e "$ini_file_tmp" ]; then
221                 rm -f "$ini_file_tmp"
222             fi
223         fi
224 done
225
226
227 db_stop || true
228
229
230 # Restart Apache2 web server if needed.
231 #
232 if [ $need_restart -eq 1 ]; then
233         
234         # Check Apache2 web server configuration.
235         if /usr/sbin/apache2ctl configtest 2>/dev/null; then
236
237                 # Restart Apache2 web server.
238                 if [ -x "/etc/init.d/apache2" ]; then
239                     if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
240                         invoke-rc.d apache2 force-reload || true
241                     else
242                         /etc/init.d/apache2 force-reload || true
243                     fi
244                 fi
245         else
246         
247                 # Something is broken.
248                 cp_echo "CN: Your Apache2 configuration is broken."
249                 cp_echo "CN: Please, check the service after the installation finishes!"
250         fi
251 fi
252
253
254 # Mail root
255 #
256 cp_mail "$PKG"
257
258 exit 0