[php-maint] Bug#827446: libapache2-mod-php5: postinst script changes MPM back to prefork, even with updates

Rudy Broersma r.broersma at exsilia.net
Thu Jun 16 08:31:33 UTC 2016


Package: libapache2-mod-php5
Version: 5.6.22+dfsg-0+deb8u1
Severity: minor

Dear Maintainer,

We have noticed that when a Debian package update is released for libapache2-mod-php5,
that the dpkg/apt postinst script changes the Apache2 MPM back to prefork. This
is done in /var/lib/dpkg/info/libapache2-mod-php5.postinst line 15 to 21:

        mpm=$(a2query -M)
        case "$(a2query -M)" in
            prefork|itk) return 0;;
            *) if apache2_switch_mpm prefork; then return 0; fi;;
        esac
        apache2_msg err "Could not switch to prefork MPM, not enabling php5"
        return 1

In our situation, we have software that depends on libapache2-mod-php5 (Plesk), but
do not actually use php5 as an Apache module. We are also running the event MPM.

Now, with an update to this package, the MPM on production machines is changed back
to the prefork MPM causing configuration to get lost, settings like MaxClients to fallback
to tiny defaults, etc, etc.

I can understand that when installing libapache2-mod-php5 changing the MPM is justified,
but I dont feel this is justified when installing updates. For example, in our
case we dont use the PHP5 module, but we need it due to dependencies by Plesk.

Usually, when installing Debian updates, and the package comes with a modified configuration
file dpkg will ask the administrator if he wants to ignore, view or implement the new configuration
file. I believe this is the way to go when changing the MPM as well, as it means a pretty
heafty change to the Apache webserver.

The postinst script currently just changes the MPM without asking any questions. I feel this
is a too big of a change to perform without asking for confirmation.

So in short I would like to propose a change to the postinst script for this package:

1. Require user input for changing the MPM. This will also ensure the package is not
   updated using unattended-upgrades (which is what happend in our case).

or

2. Stop changing the MPM, atleast when updating the package.


-- Package-specific info:
==== Additional PHP 5 information ====

++++ PHP 5 SAPI (php5query -S): ++++
apache2
cgi
fpm
embed
cli

++++ PHP 5 Extensions (php5query -M -v): ++++
pdo_sqlite (Enabled for apache2 by maintainer script)
pdo_sqlite (Enabled for cgi by maintainer script)
pdo_sqlite (Enabled for fpm by maintainer script)
pdo_sqlite (Enabled for embed by maintainer script)
pdo_sqlite (Enabled for cli by maintainer script)
imap (Enabled for apache2 by maintainer script)
imap (Enabled for cgi by maintainer script)
imap (Enabled for fpm by maintainer script)
imap (Enabled for embed by maintainer script)
imap (Enabled for cli by maintainer script)
intl (Enabled for apache2 by maintainer script)
intl (Enabled for cgi by maintainer script)
intl (Enabled for fpm by maintainer script)
intl (Enabled for embed by maintainer script)
intl (Enabled for cli by maintainer script)
curl (Enabled for apache2 by maintainer script)
curl (Enabled for cgi by maintainer script)
curl (Enabled for fpm by maintainer script)
curl (Enabled for embed by maintainer script)
curl (Enabled for cli by maintainer script)
pdo (Enabled for apache2 by maintainer script)
pdo (Enabled for cgi by maintainer script)
pdo (Enabled for fpm by maintainer script)
pdo (Enabled for embed by maintainer script)
pdo (Enabled for cli by maintainer script)
sqlite3 (Enabled for apache2 by maintainer script)
sqlite3 (Enabled for cgi by maintainer script)
sqlite3 (Enabled for fpm by maintainer script)
sqlite3 (Enabled for embed by maintainer script)
sqlite3 (Enabled for cli by maintainer script)
mysql (Enabled for apache2 by maintainer script)
mysql (Enabled for cgi by maintainer script)
mysql (Enabled for fpm by maintainer script)
mysql (Enabled for embed by maintainer script)
mysql (Enabled for cli by maintainer script)
json (Enabled for apache2 by maintainer script)
json (Enabled for cgi by maintainer script)
json (Enabled for fpm by maintainer script)
json (Enabled for embed by maintainer script)
json (Enabled for cli by maintainer script)
puppet (Enabled for apache2 by local administrator)
puppet (Enabled for cgi by local administrator)
puppet (Enabled for fpm by local administrator)
puppet (Enabled for embed by local administrator)
puppet (Enabled for cli by local administrator)
imagick (Enabled for apache2 by maintainer script)
imagick (Enabled for cgi by maintainer script)
imagick (Enabled for fpm by maintainer script)
imagick (Enabled for embed by maintainer script)
imagick (Enabled for cli by maintainer script)
readline (Enabled for apache2 by maintainer script)
readline (Enabled for cgi by maintainer script)
readline (Enabled for fpm by maintainer script)
readline (Enabled for embed by maintainer script)
readline (Enabled for cli by maintainer script)
gd (Enabled for apache2 by maintainer script)
gd (Enabled for cgi by maintainer script)
gd (Enabled for fpm by maintainer script)
gd (Enabled for embed by maintainer script)
gd (Enabled for cli by maintainer script)
xmlrpc (Enabled for apache2 by maintainer script)
xmlrpc (Enabled for cgi by maintainer script)
xmlrpc (Enabled for fpm by maintainer script)
xmlrpc (Enabled for embed by maintainer script)
xmlrpc (Enabled for cli by maintainer script)
mysqli (Enabled for apache2 by maintainer script)
mysqli (Enabled for cgi by maintainer script)
mysqli (Enabled for fpm by maintainer script)
mysqli (Enabled for embed by maintainer script)
mysqli (Enabled for cli by maintainer script)
pdo_mysql (Enabled for apache2 by maintainer script)
pdo_mysql (Enabled for cgi by maintainer script)
pdo_mysql (Enabled for fpm by maintainer script)
pdo_mysql (Enabled for embed by maintainer script)
pdo_mysql (Enabled for cli by maintainer script)
opcache (Enabled for apache2 by maintainer script)
opcache (Enabled for cgi by maintainer script)
opcache (Enabled for fpm by maintainer script)
opcache (Enabled for embed by maintainer script)
opcache (Enabled for cli by maintainer script)
mcrypt (Enabled for apache2 by maintainer script)
mcrypt (Enabled for cgi by maintainer script)
mcrypt (Enabled for fpm by maintainer script)
mcrypt (Enabled for embed by maintainer script)
mcrypt (Enabled for cli by maintainer script)
mysqlnd (Enabled for apache2 by maintainer script)
mysqlnd (Enabled for cgi by maintainer script)
mysqlnd (Enabled for fpm by maintainer script)
mysqlnd (Enabled for embed by maintainer script)
mysqlnd (Enabled for cli by maintainer script)
xsl (Enabled for apache2 by maintainer script)
xsl (Enabled for cgi by maintainer script)
xsl (Enabled for fpm by maintainer script)
xsl (Enabled for embed by maintainer script)
xsl (Enabled for cli by maintainer script)

++++ Configuration files: ++++
[PHP]
engine = On
short_open_tag = on
asp_tags = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
disable_classes =
zend.enable_gc = On
expose_php = off
max_execution_time = 60
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
include_path = ".:"
doc_root =
user_dir =
enable_dl = Off
file_uploads = on
upload_max_filesize = 128M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[CLI Server]
cli_server.color = On
[Date]
[filter]
[iconv]
[intl]
[sqlite]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off
[Assertion]
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]

**** /etc/php5/apache2/conf.d/10-mysqlnd.ini ****
extension=mysqlnd.so

**** /etc/php5/apache2/conf.d/20-mcrypt.ini ****
extension=mcrypt.so

**** /etc/php5/apache2/conf.d/20-readline.ini ****
extension=readline.so

**** /etc/php5/apache2/conf.d/20-gd.ini ****
extension=gd.so

**** /etc/php5/apache2/conf.d/20-imagick.ini ****
extension=imagick.so

**** /etc/php5/apache2/conf.d/20-mysqli.ini ****
extension=mysqli.so

**** /etc/php5/apache2/conf.d/zend_extensions_psa.ini ****

**** /etc/php5/apache2/conf.d/20-xsl.ini ****
extension=xsl.so

**** /etc/php5/apache2/conf.d/20-intl.ini ****
extension=intl.so

**** /etc/php5/apache2/conf.d/20-json.ini ****
extension=json.so

**** /etc/php5/apache2/conf.d/20-pdo_sqlite.ini ****
extension=pdo_sqlite.so

**** /etc/php5/apache2/conf.d/20-imap.ini ****
extension=imap.so

**** /etc/php5/apache2/conf.d/20-pdo_mysql.ini ****
extension=pdo_mysql.so

**** /etc/php5/apache2/conf.d/20-puppet.ini ****
max_input_vars = 12000
max_input_time = 180
upload_max_filesize = 250M
post_max_size = 250M
upload_tmp_dir = /tmp
memory_limit = 2048M
gpc_magic_quotes = Off
date.timezone = "Europe/Amsterdam"
always_populate_raw_post_data = -1
default_socket_timeout = 900
openssl.capath = "/etc/ssl/certs/"

**** /etc/php5/apache2/conf.d/20-mysql.ini ****
extension=mysql.so

**** /etc/php5/apache2/conf.d/20-curl.ini ****
extension=curl.so

**** /etc/php5/apache2/conf.d/10-pdo.ini ****
extension=pdo.so

**** /etc/php5/apache2/conf.d/05-opcache.ini ****
zend_extension=opcache.so

**** /etc/php5/apache2/conf.d/00-ioncube-loader-5.6.ini ****
zend_extension=/usr/lib/php5/20131226/ioncube_loader_lin_5.6.so

**** /etc/php5/apache2/conf.d/20-sqlite3.ini ****
extension=sqlite3.so

**** /etc/php5/apache2/conf.d/20-xmlrpc.ini ****
extension=xmlrpc.so


-- System Information:
Debian Release: 8.5
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/12 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages libapache2-mod-php5 depends on:
ii  apache2                             2.4.10-10+deb8u4
ii  apache2-bin [apache2-api-20120211]  2.4.10-10+deb8u4
ii  libbz2-1.0                          1.0.6-7+b3
ii  libc6                               2.19-18+deb8u4
ii  libcomerr2                          1.42.12-1.1
ii  libdb5.3                            5.3.28-9
ii  libgssapi-krb5-2                    1.12.1+dfsg-19+deb8u2
ii  libk5crypto3                        1.12.1+dfsg-19+deb8u2
ii  libkrb5-3                           1.12.1+dfsg-19+deb8u2
ii  libmagic1                           1:5.22+15-2+deb8u1
ii  libonig2                            5.9.5-3.2
ii  libpcre3                            2:8.35-3.3+deb8u4
ii  libqdbm14                           1.8.78-5+b1
ii  libssl1.0.0                         1.0.1t-1+deb8u2
ii  libstdc++6                          4.9.2-10
ii  libxml2                             2.9.1+dfsg1-5+deb8u2
ii  mime-support                        3.58
ii  php5-cli                            5.6.22+dfsg-0+deb8u1
ii  php5-common                         5.6.22+dfsg-0+deb8u1
ii  php5-json                           1.3.6-1
ii  tzdata                              2016d-0+deb8u1
ii  ucf                                 3.0030
ii  zlib1g                              1:1.2.8.dfsg-2+b1

libapache2-mod-php5 recommends no packages.

Versions of packages libapache2-mod-php5 suggests:
ii  php-pear  5.6.22+dfsg-0+deb8u1

Versions of packages php5-common depends on:
ii  libc6   2.19-18+deb8u4
ii  lsof    4.86+dfsg-1
ii  psmisc  22.21-2
ii  sed     4.2.2-4+b1
ii  ucf     3.0030

Versions of packages php5-common suggests:
pn  php5-user-cache  <none>

-- debconf-show failed



More information about the pkg-php-maint mailing list