PHP 文件是在 Apache 上的 UserDir 中下载的,而不是执行的

PHP 文件是在 Apache 上的 UserDir 中下载的,而不是执行的

我们正在运行使用带有 Apache 2 的 Debian 6.0.3 的 Web 服务器,最近我们从 Debian 5 升级到了 6。从那时起,用户目录中的 php 脚本(使用 mod_userdir)就停止工作了,它们是被下载而不是被执行。

在用户目录之外还有一个使用 php 的网站,该网站仍然运行良好,因此 PHP 似乎在服务器上正常运行。我用几个 PHP 文件对其进行了测试,其中包括一个简单的 phpinfo 文件,它在主站点上运行良好,但在将其复制到其中一个用户目录时才会下载。

php 文件和包含它们的目录对每个人都是可执行的。Apache php5.conf 中的选项默认禁用用户目录中的 PHP,该选项已被注释掉,因此 php5.ini 如下所示:

<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。我现在不知道问题可能是什么,我不知道如何真正确定哪个问题阻止了这些 php 文件被执行。有什么想法可以解决这个问题吗?

更新:

奇怪的是,PHP 似乎在用户目录的子文件夹中运行良好,所以如果我将 PHP 文件从中复制到/home/user/public_html//home/user/public_html/test/,它就会突然运行起来。

答案1

首先,尝试一下

egrep -ir "(php_admin_value|mod_userdir|public_html)" /etc/apache2

并查看所有可能禁用用户目录 PHP 的位置。根据需要进行更改。重新启动 Apache,尽情享受吧。

答案2

我遇到了同样的问题,并通过安装解决了

apt-get install libapache2-mod-php5

相关内容