PHP会话_start()无法创建会话

PHP会话_start()无法创建会话,php,session,Php,Session,以下是我在index.php中的前5行: <?php session_start(); if (!isset($_SESSION['cart'])) $_SESSION['cart']=''; $page = $_GET['page']; ?> 我怎么关掉这个?是什么送来的 我设置session.auto_start=1 在网站文件夹的php.ini中 会话现在可以工作了。。 不知道是什么原因导致了问题,但如果我在php开始标记前看到的空白(对我有效,则问题已暂时修复。请确保您

以下是我在index.php中的前5行:

  <?php
session_start();
if (!isset($_SESSION['cart'])) $_SESSION['cart']='';
$page = $_GET['page'];
?>
我怎么关掉这个?是什么送来的

我设置session.auto_start=1 在网站文件夹的php.ini中 会话现在可以工作了。。
不知道是什么原因导致了问题,但如果我在php开始标记前看到的空白(对我有效,则问题已暂时修复。请确保您的服务器对保存会话数据的文件夹具有写访问权限(检查会话路径:)


@帕兰蒂尔:空格也没关系。

有东西首先被发送到浏览器,这会导致标题被发送。检查你的代码,确保在你的PHP代码之前没有一个空格。

是调用的第一个PHP页面还是从另一个页面包含的


如果是第一次,请尝试在php.ini上启用输出缓冲。然后,您可以通过调用
ob\u get\u contents()来查看之前发送的内容

一些编辑器在文件开头添加了一个不可见的UTF-8字节顺序标记。根据不同的服务器软件版本,它可能会被发送到浏览器,也可能不会被发送到浏览器。您能否检查源代码的十六进制转储,并确保前5个字节是
3c 3f 70 68 70

我遇到这个问题是由两个不同的原因造成的事情:

1-在文件案例的开头有一个空行,即PHP5.2推送“headers ready sent”警告

如果<?php位于脚本的第2行,并且上面有一个空行,则 这可能会导致诸如php头函数不工作之类的问题

2-默认情况下关闭了PHP输出缓冲。 如果您使用的是共享主机,并且代码在本地主机上工作,这可能就是原因。 只需在php.ini或local.user.ini中设置这些参数


output_buffering=4096

您是否检查了BOM和自动预编?从我所看到的情况来看,这几乎就是答案。您是否使用了不同的文本编辑器,转换了文件编码,诸如此类?当您说
时,我使用了与创建该编辑器相同的编辑器。如果是这样的话,我如何处理问题sue?@DreamWave:这些都是标准的PHP标题,没问题。你一定要看看错误中提到的文件上有什么!@DreamWave只是快速检查一下:在高级->配置->文件处理->保存下的UltraEdit中,保存UTF-8 BOM的设置是否被检查过?正如我所说的,没有任何内容-这是index.PHP的前5行文件内容肯定正在发送到浏览器。如果调用此回显(headers_sent())?“sent”:“not sent”;在调用会话_start()之前;我收到“sent”…我如何检查发送的内容?如果您暂时将目前存在的index.php替换为一个只显示
的简单的index.php会怎么样?您会得到相同的结果吗?还是它会显示“未发送”?我不确定,但ob_clean()可能会清理输出缓冲区,请在会话开始前立即尝试使用();这可能取决于PHP版本,因为现代的PHP通常会检测到此类问题并切断空白。PHP关闭后的尾随空间也是如此。但你知道,当发生不好的事情时,最好消除所有可能的原因…出于同样的原因,我尽可能不使用PHP关闭标记:为什么公开g你自己惹麻烦了吗?它是在一个使用了六年的PHP4机器上测试的。如果打开了输出缓冲,它不会引起任何问题,这取决于配置。你如何检查并修复它?
array(2) { [0]=> string(23) "X-Powered-By: PHP/5.2.6" [1]=> string(23) "Content-type: text/html" }
      <?php
    session_start();
    $_SESSION['cart'] = "test<br />";
    print $_SESSION['cart'];
    if (!isset($_SESSION['cart'])) $_SESSION['cart']='';
    print $_SESSION['cart'];
//blank it out
    if (isset($_SESSION['cart'])) $_SESSION['cart']='';
    print $_SESSION['cart'];
    ?>
test
test