![有时 Apache 会输出 PHP 源代码](https://linux22.com/image/496908/%E6%9C%89%E6%97%B6%20Apache%20%E4%BC%9A%E8%BE%93%E5%87%BA%20PHP%20%E6%BA%90%E4%BB%A3%E7%A0%81.png)
我的 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 文件,但如果没有看到其他配置文件,我们就无法确定。