系统升级后,PHP无法在Apache2中运行


14

最近将我的系统从Karmic升级到Lucid。我相信这涉及到Apache和PHP的更新。

现在,我的服务器无法处理PHP文件,对它们的任何导航都将触发下载而不是解析。

PHP模块仍在启用Apache mods的情况下加载,而我 AddType application/x-httpd-php .php在httpd.conf中。

Apache访问或错误日志中没有有意义的消息,所以我很困惑。

任何帮助,将不胜感激。谢谢。

Answers:


17

/var/log/apache2/error.log 如果成功加载了PHP,则应该显示如下一行:

[2011年8月30日星期二12:53:36] [注意]配置了Suhosin-Patch的Apache / 2.2.14(Ubuntu)PHP / 5.3.2-1ubuntu4.9-恢复正常运行

请注意日期,如果是2009年的日期,则说明配置错误。

AddType 是没有用的,您需要使用:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

另请参阅php.net上针对Apache 2.x安装说明

您不需要手动添加,该软件包libapache2-mod-php5安装/etc/apache2/mods-available/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>

由于它是配置文件,因此升级时可能未安装该文件。为了解决这个问题清除它,然后再重新安装:

sudo apt-get purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5

要启用PHP,您必须运行:

sudo a2enmod php5

在以下情况下重新启动Web服务器:

sudo /etc/init.d/apache2 restart

其他要做的事情:

  • 检查中是否存在冲突的设置/etc/apache2
  • 您是否从源代码构建了Apache?
  • 运行sudo apache2ctl configtest以检查配置中的语法错误
  • 打开http:// localhost / server-info检查加载的配置和模块。该status模块必须加载此。如果您正在运行远程服务器,则需要将自己添加到Allow from列表中,/etc/apache2/mods-enabled/status.conf然后再重新启动服务器

辉煌。AFK现在开始,但今晚将进行测试。谢谢。
2011年

清除并重新安装后,该模块已在启用了mods的情况下加载,但是我仍然遇到同样的问题...我找不到任何会引起冲突的内容,并且conf文件中的include绝对存在于apache.conf中。你还有其他建议吗?谢谢。
2011年

@Jivings:添加了一些调试想法
Lekensteyn 2011年

仍然无法弄清楚。但是我发现了一些更奇怪的东西。似乎PHP对于已设置的虚拟主机之一运行良好,尽管它所做的只是在/ var / www定义了documentRoot。这怎么可能?!
Jivings

1
您仍然需要刷新浏览器的缓存并重新启动apache。
Francesco'2

3

在没有其他方法起作用并且Apache变得非常混乱之后,我终于清除了所有Apache软件包并重新安装了它们。

似乎现在工作正常,谁知道这是怎么回事。

编辑

当我再次设置Apache配置设置时,我发现出了什么问题。[此博客条目] [1]对此进行了说明。

事实证明,尽管没有积极使用userdir模块,但其余站点文件仍位于我的〜/ public_html文件夹中,并且其中的所有内容都被禁用了php。

我想这肯定是对我的Karmic设置中不存在的php模块的最新补充。


1
那应该与配置问题有关。升级时,不会/etc复制任何文件(至少,有人/etc/init.d/apache2在重新安装时没有创建问题,仅在清除+安装时有问题)
Lekensteyn 2011年

奇怪的是,它在我的系统升级之前就可以正常工作了……
Jivings 2011年

然后可能会更改功能。您不能期望每次升级都遵循旧的配置设置。对于大多数人来说,某些修改是有意义的,而对于其他一些修改则没有意义。
Lekensteyn 2011年

确实。感谢您帮助我
走到最深处

1

php5.conf文件/etc/apache2/mods-enabled底部有几行内容,可防止php在用户目录中执行,因此根据您的配置,这也可能是您的问题。您可以将这些行注释掉并重新加载apache2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.