浏览器从apache web服务器下载php文件

时间:2011-04-08 07:07:04

标签: php apache2

我有一个apache web服务器。假设此服务器的域名为 example.com

当我访问 example.com 时,index.php文件在浏览器中正确显示。

然而,当我访问例如 example.com/~user ,然后下载而不是显示index.php文件的/home/user/public_html/index.php文件。

如何解决此问题?我更改了"expose_php = Off"中的php.ini,但没有任何变化。

3 个答案:

答案 0 :(得分:12)

如果您使用的是Debian / Ubuntu,请查看此文件/etc/apache2/mods-available/php5.conf

我看起来像这样你可以看到我必须评论某些行以使PHP在用户目录中工作

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.php$">
        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才能使修改生效,在基于debian的系统上重启apache的命令是:/etc/init.d/apache2 restart

答案 1 :(得分:5)

希望这可以让别人头疼。我知道这个问题很老,但在搜索这个问题时仍然会出现这个问题。

我不确定这是否适用于所有apache2的安装,但我在ubuntu上运行apache2并且我的网页浏览器下载文件的问题而不是显示正确的索引文件。

问题出在文件/etc/apache2/mods-enabled/dir.conf中 这里的默认文档设置覆盖了我在/etc/apache2/httpd.conf中设置的内容

所以只需打开/etc/apache2/mods-enabled/dir.conf并更改列出的文件的顺序。

:)

答案 2 :(得分:0)

我有类似的经历 - 一些php文件工作正常,但其他人似乎已经下载了原始的PHP代码。

在我的情况下,这是由于使用短标签格式&lt ;?的文件损坏了和?&gt;。这是不推荐的,你可能会发现默认的php.ini强制关闭此支持。在支持关闭的情况下,php代码将被发送到浏览器,就像它是HTML一样。

如果您无法避免使用短标签(在我的情况下 - 使用短标签的整个遗留代码库),那么您可以将其设置为在php.ini中允许:

short_open_tag = On