include_once无法正常工作

时间:2011-08-09 10:47:02

标签: php include iis-6

我正在尝试创建一个页面,如果用户请求页面则返回文件,并在代码请求时返回api响应。它工作正常,但谷歌chrome(和ie)渲染用户页面就好像它是:

<head></head>
<body><title>BLAH</title>
<h1>Bloo bloo blah</h1></body>

即使查看源返回:

<head><title>BLAH</title></head>
<body><h1>Bloo bloo blah</h1></body>

但是当我转到包含的页面时,它显示不正确。

PHP代码:

<?php
if ($_GET['mode']) {
    echo 'server response';
}
else {
    include_once('main.php');
}
?>

main.php代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>BLAH</title></head>
<body><h1>Bloo bloo blah</h1></body> 
</html>

任何帮助将不胜感激。 我在Windows 7计算机上运行的是使用IIS 6.1和PHP 5.3.5。

1 个答案:

答案 0 :(得分:1)

请尝试以下方法:

而不是

if ($_GET['mode']) {

在使用之前检查是否设置了键mode的值:

if (isset($_GET['mode']) && $_GET['mode']) {

这只是一个预防措施,以防PHP因为警告或通知而产生输出(但必须没有), 会影响输出。

接下来,您应该检查服务器返回的内容,而不是浏览器中的视图源。安装cUrl命令行工具(Download),然后在shell中运行:

curl http://myurl

当服务器返回HTML时,它将输出HTML。在进一步分析问题之前,实际需要此信息。

修改:问题的原因是main.php与BOM一起保存。从文件中删除BOM,你没事。

相关: