我有一个apache web服务器。假设此服务器的域名为 example.com 。
当我访问 example.com 时,index.php
文件在浏览器中正确显示。
然而,当我访问例如 example.com/~user ,然后下载而不是显示index.php
文件的/home/user/public_html/index.php
文件。
如何解决此问题?我更改了"expose_php = Off"
中的php.ini
,但没有任何变化。
答案 0 :(得分:12)
如果您使用的是Debian / Ubuntu,请查看此文件/etc/apache2/mods-available/php5.conf
<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