我们正在运行使用带有 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