当 Apache 的 mod_negotiation 发挥作用时,PHP 的 virtual() 会出现奇怪的行为

当 Apache 的 mod_negotiation 发挥作用时,PHP 的 virtual() 会出现奇怪的行为

首先:如果单独操作,PHPvirtual()和 Apache 都可以正常工作。但是当引用需要协商的文件(例如 Multi-Lang)mod_negotiation时,我遇到了麻烦。使用简化的示例可以最轻松地解释:virtual()

/texts/放置了两个文件:(example.html内容:)<P>This is English</P>example.html.de<P>Dies ist Deutsch</P>)。现在让我们来看一个 PHP 脚本示例:

<HTML><HEAD><TITLE>Example</TITLE></HEAD><BODY>
<? virtual("/texts/example.html"); ?>
</BODY></HTML>

这工作正常,并且输出符合预期:

<HTML><HEAD><TITLE>Example</TITLE></HEAD><BODY>
<P>This is English</P>
</BODY></HTML>

但现在我将virtual()调用改为virtual("/texts/example");,并将我的首选语言设置为德语。虽然协商选择了正确的目标,但输出却一团糟:

<P>Dies ist Deutsch</P>
<HTML><HEAD><TITLE>Example</TITLE></HEAD><BODY>
</BODY></HTML>

再次强调:上述代码中唯一改变的是调用的参数virtual()。这些文件在我的其他机器上运行了大约 10 年,但都运行良好——只是在我的新机器上,出现了这种疯狂的情况:

PHP 版本:5.3.10(在工作机器上:5.2.4)
Apache2 版本:2.2.22(在工作机器上:2.2.8)

知道这里可能出现什么问题吗?

相关内容