我刚刚运行了 apt-get update 和 upgrade 来获取我的 Debian 稳定服务器的最新更新。它包含大量 PHP5 更新。其中一个 (libapache2-mod-php5) 抛出了一个错误:ERROR: php5 module already enabled, not enabling php5
。
此外,Apache 没有重新启动,因此 PHP5 更新无效。我手动重新启动了 Apache,一切正常。
这是更新脚本中的错误还是我的服务器出现问题?
以下是 apt-get upgrade 输出的最后几行:
Setting up mysql-client (5.5.49-0+deb8u1) ... Setting up openssh-client (1:6.7p1-5+deb8u2) ... Setting up openssh-sftp-server (1:6.7p1-5+deb8u2) ... Setting up openssh-server (1:6.7p1-5+deb8u2) ... Setting up php5-common (5.6.20+dfsg-0+deb8u1) ... Setting up php5-xmlrpc (5.6.20+dfsg-0+deb8u1) ... Setting up php5-tidy (5.6.20+dfsg-0+deb8u1) ... Setting up php5-cli (5.6.20+dfsg-0+deb8u1) ... Setting up php5-readline (5.6.20+dfsg-0+deb8u1) ... Setting up php5-mysql (5.6.20+dfsg-0+deb8u1) ... Setting up php5-gmp (5.6.20+dfsg-0+deb8u1) ... Setting up php5-gd (5.6.20+dfsg-0+deb8u1) ... Setting up php5-curl (5.6.20+dfsg-0+deb8u1) ... Setting up libapache2-mod-php5 (5.6.20+dfsg-0+deb8u1) ... ERROR: php5 module already enabled, not enabling php5 Setting up linux-libc-dev:amd64 (3.16.7-ckt25-2) ... Setting up php-pear (5.6.20+dfsg-0+deb8u1) ... Installing new version of config file /etc/pear/pear.conf ... Processing triggers for libc-bin (2.19-18+deb8u4) ...
答案1
我刚刚查看了 postinst-maintainer-script /var/lib/dpkg/info/libapache2-mod-php5.postinst
。它指出:
php5_enable() {
PHP_MODULE=$(a2query -m | sed -n 's/^\(php[\.0-9]*\) (enabled.*)/\1/p')
if [ -n "$PHP_MODULE" -a "$PHP_MODULE" != "php@PHP_VERSION@" ]; then
apache2_msg err "ERROR: $PHP_MODULE module already enabled, not enabling php5"
return 1
fi
我无法弄清楚@PHP_VERSION@的设置位置,因此我将其替换为“5”:
php5_enable() {
PHP_MODULE=$(a2query -m | sed -n 's/^\(php[\.0-9]*\) (enabled.*)/\1/p')
if [ -n "$PHP_MODULE" -a "$PHP_MODULE" != "php5" ]; then
apache2_msg err "ERROR: $PHP_MODULE module already enabled, not enabling php5"
return 1
fi
之后我运行:
% sudo dpkg-reconfigure libapache2-mod-php5
apache2_invoke php5: already enabled
这是一个更好的输出。虽然(看似)无害,但对我来说似乎是一个错误。Debian BTS不包含有关该错误的信息。您应该考虑报告该错误。
答案2
这实际上不是一个错误。该脚本只是假设您的 Apache2 实例中的 php5 模块未启用(并尝试启用它),因此它会向您显示此消息(在我看来,这应该是一个警告,如果不是信息的话,因为服务仍然运行良好)。
至于服务重启 - Apache 很可能因为那个“错误”而没有重启。