有时 Apache 会输出 PHP 源代码

有时 Apache 会输出 PHP 源代码

我的 Apache 服务器遇到了一个很奇怪的问题。

我有两个包含 的文件<?php phpinfo(); ?>。它们都放在同一台服务器上,但在不同的虚拟主机中。虚拟主机如下所示:

第一:

<VirtualHost *:80>
        DocumentRoot /var/www/[...]/public_html
        ServerName something
        <Directory />
                AllowOverride All
        </Directory>
</VirtualHost>

第二个:

<VirtualHost *:80>
        DocumentRoot /var/www/[...]/public_html
        ServerName something
        ServerAlias something

        <Directory />
                AllowOverride All
        </Directory>
</VirtualHost>

如您所见,它们几乎相等。但是,如果我指向第二个虚拟主机上的 phpinfo.php,则源将发送到客户端。在第一个虚拟主机上,phpinfo 已成功执行并显示给用户。

什么原因造成这种差异?

答案1

  • 你确定两个文件都以.php

  • 您是否正在使用<?而不<?php在其中一个来源中?

  • 即使你这么说没有不起作用的 .htaccess 文件您介意粘贴其内容吗?

  • 尝试恢复虚拟主机的顺序,看看是否有任何变化。

  • 尝试一次,无需任何额外的目录指令。

答案2

“AllowOverride All” 表示任何 apache 设置都可以被每个 vhost 的 DocumentRoot 中的 .htaccess 文件(或 DocumentRoot 的子目录中)覆盖。检查您的 php 设置是否在那里配置。

答案3

您认为您可以发布完整的服务器配置吗?

这两个文件的文件名是什么?

我还大胆猜测那里有一个 .htaccess 文件,但如果没有看到其他配置文件,我们就无法确定。

相关内容