1

我有以下错误,而在 session_start 函数之前没有输出:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /xyz_path/index.php:1) in /xyz_path/index.php on line 2

代码如下:

<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>Application Jersey</title>

我也试过这段代码,错误是一样的,但会话 id 可用:

<?php
if(!session_start()){
    session_start();
}
echo session_id();
?>
4

4 回答 4

2

错误说它发生在第 2 行,这表明要么

  • 你在顶部有一个空行,或者
  • 发送了一个隐形字符

如果是第二个,请确保将代码编辑器中的文件编码更改为名称中没有 BOM 的任何内容。

一些编辑器在 UTF(8, 16) 编码文件的开头添加 BOM 字节。

于 2013-06-17T08:15:39.530 回答
0

在 linux 上,您可以使用以下命令:

cat -A 'filename'  

或者

cat -A 'filename' | less  

它会显示

M-oM-;M-?<?php$
于 2015-04-20T13:59:00.800 回答
0

试试这个代码:

<?php 
ob_start(); // add this line
session_start(); 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>Application Jersey</title>

这对我有用。

于 2013-06-17T08:10:33.480 回答
-2

尝试使用以下代码

<?php session_start(); ob_start(); ?>

用上面的行替换代码的第一行。

于 2013-06-17T08:10:13.003 回答