PHP session_start()无法创建会话

Dre*_*ave 1 php session

这些是我在index.php中的前5行:

  <?php
session_start();
if (!isset($_SESSION['cart'])) $_SESSION['cart']='';
$page = $_GET['page'];
?>
Run Code Online (Sandbox Code Playgroud)

我正在通过firefox-> firebug-> firecookie插件查看会话,并且没有创建会话.(我很确定,因为昨天工作的购物车今天不起作用.)任何想法为什么这个可能会发生以及如何解决它?

我在启用错误时发现了这一点:警告:session_start()[function.session-start]:无法发送会话cookie - 已经发送的标头(输出从/home/controll/public_html/metalkonsult.com/index.php:1开始)在第2行的/home/controll/public_html/metalkonsult.com/index.php中

我进一步探索 - 一些东西被发送到浏览器,但我不知道它来自哪里.我做了一个var_dump(headers_list()); 在第一行,这是我得到的:

array(2) { [0]=> string(23) "X-Powered-By: PHP/5.2.6" [1]=> string(23) "Content-type: text/html" }
Run Code Online (Sandbox Code Playgroud)

我怎么关掉这个?发送什么?

我在网站文件夹会话中的php.ini中设置session.auto_start = 1现在工作..不知道导致问题的原因但是问题暂时得到解决

Pal*_*tir 8

如果我在你的php开始标记(<?php)之前看到的空格也在源代码中,那么这就是原因:)确保在session_start调用之前没有输出.

您可以使用firebug检查确切的输出,方法是转到网络选项卡,找到PHP文件传输,展开它,然后查看响应选项卡.你可以在session_start之后放一个打印件,看看它出现在哪里......它应该是第一件事.

否则,如果您有指向日志的php错误,请查看日志中是否有任何内容.最后,确保浏览器也显示会话cookie:某些浏览器不显示它们.

  • 你检查过BOM和自动前置吗? (3认同)

rub*_*ben 5

首先将某些内容发送到浏览器,这会导致标头被发送.检查代码以确保PHP代码之前没有一个空格.