有时Apache会输出PHP源代码

我的Apache服务器有一个很奇怪的问题。

我有两个文件包含<?php phpinfo(); ?> <?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被执行并显示给用户成功。

什么会导致这种差异?

  • 你确定两个文件都以.php结尾吗?

  • 你在使用<? 而不是<?php的其中一个来源?

  • 即使你说没有.htaccess文件不起作用 ,你会介意粘贴它的内容?

  • 尝试恢复虚拟主机的顺序以查看是否有任何更改。

  • 尝试一次没有任何额外的目录指令。

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

你认为你可以发布完整的服务器configuration吗?

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

我也冒险猜测.htaccess文件在那里,但没有看到其他configuration文件,我们不能肯定地说。