我刚开始制作这个.php文件,我似乎无法弄清楚为什么它会抛出这个警告
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\xampplite\htdocs\projectchest\controlpanel\index.php:1) in C:\Program Files\xampplite\htdocs\projectchest\controlpanel\index.php on line 2
这是我的PHP。
<?php
session_start();
require_once('../classes/users/BaseUser.php');
?>
<!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" xml:lang="en" lang="en">
...
</html>
这里是访问我的php.ini文件
pastebin dot com / f60d22891抱歉,我无法发布一些垃圾邮件的两个链接
我还发现这个帖子暗示我的权限设置搞砸了。我试过这个......没有运气 PHP session_start fails
答案 0 :(得分:4)
PHP中的会话基于cookie (传输session_id
)。
Cookie以HTTP标头形式发送。
只有在尚未发送输出的情况下才能发送HTTP标头。
您收到的错误消息表示无法发送会话cookie,因为某些输出已经发送。
这意味着在调用session_start()
之前,您必须确保不要发送任何输出(甚至不是一个空格!)。
一些想法:
作为旁注:您可能会在某些服务器上出现此错误,而不是在其他服务器上,因为output_buffering
的配置:如果它在上(它在您的php.ini文件中为Off) ,PHP会在发送之前将一些数据保存在内存中 - 这意味着即使少量数据似乎已经发送也可以发送标题(实际上,少量数据保存在内存中,并且
答案 1 :(得分:1)
很可能是字符编码问题(准确地说是UTF 8 BOM)。尝试将您的php源文件转换为没有BOM的UTF-8。你在用哪个编辑器?
答案 2 :(得分:0)
php.ini (see manual)中还有session.auto_start
指令,它将在PHP发送HTTP标头后立即交换cookie并设置会话。不是可定制的,但它是最小距离的解决方案。