2012-10-24 169 views
0

可能重复:
Headers already sent by PHP为什么我会得到这些php session_start()错误?

这些都是错误的:

我构建我在不同的目录的项目,相关文件的继承人代码:

FILE:init:

<?php 
session_start(); 
require 'database/connect.php'; 


?> 

FILE:Oheader:

<body> 
<?php include 'includes/header.php';?> 

FILE:头:

<head> 
<title>Project47</title> 
<meta charset="utf-8" /> 
<link rel="stylesheet" href="css/pjcss.css"> 
</head> 

任何人都不会有为什么发生这种情况的任何想法...代码上面显示是每个文件的全部

+1

你和你在哪里包括init.php? – GBD

+0

您是否读过错误OP? –

+0

会话可以修改您的标题。所以在输出任何内容之前使用它。 –

回答

1

其原因你输出的东西之前启动会话

甚至空白的会议开始前,导致此警告

和头部已经发送时也因为事情是头

enter image description here

+0

对包含文件中的尾随空格也感到厌倦。如果在预期输出之前包含它们,则可能导致类似的错误。避免这种情况的一个技巧就是在文件末尾打开php。 IE,不要把关闭?>放在像database/connect.php这样的文件中 –

+1

只是为了添加一个可能帮助其他人的信息:如果你确定在'session_start'之前没有写入任何字符,并且错误依然存在你可能用BOM(字节顺序标记)保存你的文件,在你的编辑器中应该有一个选项来选择一个编码,比如'UTF-8 without BOM' – Delta

+0

@Delta :)非常好的你 –

0

写之前发送php代码和顶部的include语句。然后开始写html。 见下面

<?php 
session_start(); 
include 'includes/header.php'; 
?> 

<html> 
    <head></head> 

... 
... 
0

与您的项目结构,你需要确保的init.php是所谓的执行顺序的第一个文件,和所有其他文件,包括“头”,应包括内部的文件。您不能在session_start()之前输出甚至是空字符串。如果所有文件都包含在一个单独的主文件中,比如说index.php,它应该看起来像这样。

<?php 
     include ("init.php"); 
    ?> 
    <html> 
    <!-- The head file should come here --> 
    <?php 
     include "Oheader.php"; 
    ?>