我遇到以下错误,而在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();
?>
答案 0 :(得分:2)
错误说它发生在第2行,其中表示要么
如果是第二个,请确保将代码编辑器中的文件编码更改为名称中没有BOM的任何内容。
某些编辑器在UTF(8,16)编码文件的开头添加BOM字节。
答案 1 :(得分: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>
这适合我。
答案 2 :(得分:0)
在linux上你可以使用命令:
cat -A 'filename'
或
cat -A 'filename' | less
它会显示
M-oM-;M-?<?php$
答案 3 :(得分:-2)
尝试使用以下代码
<?php session_start(); ob_start(); ?>
用上面的代码替换代码的第一行。