今天我把 Lenny 的 dist-upgrade 升级到了 Squeeze(我之前在很多其他服务器上都做过这个,没有遇到什么麻烦),除了 PHP 之外,其他大部分都正常工作。使用 PHP 的站点只显示 PHP 文件,而不是生成这些文件的服务器。据我所知,根据错误日志,Apache 服务器实际上运行 PHP 正常,但它表现得好像根本没有运行一样。
我在故障排除过程中发现一个奇怪的现象,即 /etc/asterisk/mods-enabled/php5.conf 似乎引用了一个不存在的文件,即 mod_php.c。但在我看来,这听起来不像是一个编译模块,同时,mod_php.c 和 mod_php.so 在系统中不存在,尽管 Debian dpkg 系统似乎认为它们是存在的。
以下是php5.conf的内容:
<IfModule mod_php5.c>
<FilesMatch "\.ph(p3?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
# To re-enable php in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_value engine Off
</Directory>
</IfModule>
</IfModule>
重新启动 Apache 时我收到以下错误消息:
[Tue Apr 26 15:46:42 2011] [notice] caught SIGTERM, shutting down
[Tue Apr 26 15:46:43 2011] [warn] No JkLogFile defined in httpd.conf. Using default /var/log/apache2/mod_jk.log
[Tue Apr 26 15:46:43 2011] [warn] No JkShmFile defined in httpd.conf. Using default /var/log/apache2/jk-runtime-status
[Tue Apr 26 15:46:43 2011] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[Tue Apr 26 15:46:44 2011] [notice] Digest: generating secret for digest authentication ...
[Tue Apr 26 15:46:44 2011] [notice] Digest: done
[Tue Apr 26 15:46:44 2011] [warn] No JkLogFile defined in httpd.conf. Using default /var/log/apache2/mod_jk.log
[Tue Apr 26 15:46:44 2011] [warn] No JkShmFile defined in httpd.conf. Using default /var/log/apache2/jk-runtime-status
[Tue Apr 26 15:46:44 2011] [error] python_init: Python version mismatch, expected '2.6.5+', found '2.6.6'.
[Tue Apr 26 15:46:44 2011] [error] python_init: Python executable found '/usr/bin/python'.
[Tue Apr 26 15:46:44 2011] [error] python_init: Python path being used '/usr/lib/python2.6/:/usr/lib/python2.6/plat-linux2:/usr/lib/python2.6/lib-tk:/usr/lib/python2.6/lib-old:/usr/lib/python2.6/lib-dynload'.
[Tue Apr 26 15:46:44 2011] [notice] mod_python: Creating 8 session mutexes based on 110 max processes and 0 max threads.
[Tue Apr 26 15:46:44 2011] [notice] mod_python: using mutex_directory /tmp
[Tue Apr 26 15:46:44 2011] [notice] Apache/2.2.16 (Debian) DAV/2 SVN/1.6.12 mod_fcgid/2.3.6 mod_jk/1.2.26 PHP/5.3.3-7+squeeze1 with Suhosin-Patch mod_python/3.3.1 Python/2.6.6 mod_ssl/2.2.16 OpenSSL/0.9.8o mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
答案1
听起来问题出在 mod_jk 上。
squeeze 的稳定包是libapache-mod-jk(1:1.2.30-1squeeze1)这是从 lenny 的包更新而来的libapache-mod-jk(1:1.2.26-2+lenny1)
有一个确认 Debian 软件包错误报告升级后,mod_jk 将无法连接到 tomcats,但是最新版本中应该已经修复了这个问题。
尝试使用 apt-get 进行升级,看看它是否为您提供新版本,如果没有,请执行 apt-get install libapache-mod-jk,并在要求时选择保留现有配置文件。(在进行升级之前,可能应该备份所有配置文件。
另外,升级后你重启了服务器吗?当我从 lenny 升级到 squeeze 时,内核直到我重启后才升级。
答案2
在 dist-upgrade 期间,您是否替换了任何 Apache 配置文件?检查 /etc/apache2 及其所有子目录中是否存在 *-old 文件。如果存在,请检查差异 - 也许您以非标准方式启用了 PHP,或者修改了 apache2.cfg,相关更改被覆盖。检查 /etc/apache2/mods-enabled 上是否存在 mod_php,如果不存在,请使用 a2enmod 启用它。
你使用 mod_python 吗?你发布的错误日志显示了 python 错误。