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

问题描述:

我有一个apache web服务器。假设这台服务器的域名是example.com浏览器从apache web服务器下载php文件

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

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

我该如何解决这个问题?我改变了"expose_php = Off"php.ini,但没有任何改变。

+2

什么Linux发行版,你正在使用?默认情况下,debian/ubuntu禁用用户公共目录中的php解析。 – RageZ 2011-04-08 07:09:17

如果您在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

希望这样可以节省别人的头痛。我知道这个问题很旧,但在搜索这个问题时仍然会出现。

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

问题出在文件中/etc/apache2/mods-enabled/dir.conf 的默认文档设置在这里被重写我在/etc/apache2/httpd.conf

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

:)

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

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

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

short_open_tag = On