【问题标题】:php start_session() isnt working for localhostphp start_session() 不适用于本地主机
【发布时间】:2009-12-25 18:08:54
【问题描述】:

我刚开始制作这个 .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

【问题讨论】:

    标签: php session windows-xp xampp permissions


    【解决方案1】:

    PHP 中的会话基于 cookie(用于传输 session_id

    Cookies 作为 HTTP 标头发送。

    只有在尚未发送任何输出的情况下才能发送 HTTP 标头。

    您收到的错误消息表明无法发送会话 cookie,因为已经发送了一些输出。


    这意味着您必须确保在调用session_start() 之前不要发送任何输出(甚至一个空格!)


    几个想法:

    • 确保开始的php标签前没有空行
    • 确保您的 PHP 脚本没有使用 BOM 以 UTF-8 编码 (某些编辑器默认将其放在文件的开头)
      • 即重新保存您的文件(作为 UTF-8,为什么不),没有 BOM


    作为旁注:由于output_buffering 的配置,您可能会在某些服务器上遇到此错误,而不是在其他服务器上:如果它在(它在您的php.ini 文件中关闭),PHP将在发送之前将一些数据保存在内存中——这意味着即使似乎已经发送了少量数据,也可以发送标头(实际上,少量数据保存在内存中,而不是立即保存)真的发送了).

    【讨论】:

    • 我想你的意思是'确保没有空行':-)
    • @richsage : ergh :-D 是的,当然 ^^ 感谢您的评论 :-)(我编辑了我的帖子以纠正这个错误)
    • 做得很好! :) 我已经挠头好几个小时了。
    • @Anthony 如果您认为它解决了您的问题,请不要忘记接受答案 ;-)
    • Pascal Martins 你是个天才,谢谢!!!!我一直在寻找几个小时.. output_buffering 真的对我有用..
    【解决方案2】:

    很可能是字符编码问题(准确地说是 UTF 8 BOM)。尝试将您的 php 源文件转换为没有 BOM 的 UTF-8。你用的是哪个编辑器?

    【讨论】:

    • 格式 -> 转换为 UTF-8 无 BOM :)
    【解决方案3】:

    php.ini 中还有session.auto_start 指令(see manual),它将负责在PHP 发送HTTP 标头后立即交换cookie 和设置会话。不是可定制的,但它是最短距离的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 2016-01-14
      • 1970-01-01
      • 2016-08-05
      • 2016-04-17
      • 1970-01-01
      相关资源
      最近更新 更多