PHP标头/会话问题

时间:2013-11-23 02:42:28

标签: php session

稍长的问题。我最近将我的Dev站点移动到Web服务器进行进一步测试..它在移动之前完全正常工作。除了涉及标题的任何内容之外,大多数功能都有效。

我已经将ob_start / flush添加到我正在使用标题的所有地方..我检查过我在所有页面的开头调用了session_start(除非设置)。

很多
things :/ But I get 1000 errors. 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/sites/p/******/public_html/index.php:3) in /var/sites/p/*******/public_html/index.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/sites/p/party******/public_html/index.php:3) in /var/sites/p/*******/public_html/index.php on line 4
Debug active

我的index.php(我已经尝试过各种方式)=

<!DOCTYPE html>
<html lang="en">
<?php if (!isset($_SESSION)) {
  session_start();
  }
  ?>
<?php include ('lan-config.php')?>
<?php include (ABSPATH. 'lan-header.php') ?>
<?php 
  ?>
  <body>

我检查了会话是否开始,没有任何事情发生。更不用说我的登录脚本工作并设置所有$ _Session变量然后刷新它们消失。

有什么想法吗?我检查了我在header / config中发送的内容,我甚至没有使用“Header Location”doo dah

:)

1 个答案:

答案 0 :(得分:0)

正如错误消息所示,在调用session_start之前已经有输出。因为此函数修改标题信息,所以之前不能进行任何输出。请查看this awesome answer以了解原因。

所以,改变一下:

<!DOCTYPE html>
<html lang="en">
<?php if (!isset($_SESSION)) {
  session_start();
  }
  ?>
<?php include ('lan-config.php')?>
<?php include (ABSPATH. 'lan-header.php') ?>
<?php 
  ?>
  <body>

到此

<?php 
if (!isset($_SESSION)) {
  session_start();
  }
?>
<!DOCTYPE html>
<html lang="en">
<?php include ('lan-config.php')?>
<?php include (ABSPATH. 'lan-header.php') ?>
<?php 
  ?>
  <body>

也许您需要在doctype HTML标记之前添加lan-config.phplan-header.php,这取决于您在这些文件中执行的操作。