【问题标题】:How can I solve ,,PHP Warning: session_start(): Cannot start session when headers already sent"? [duplicate]我该如何解决,PHP警告:session_start():标头已发送时无法启动会话“? [重复]
【发布时间】:2021-06-14 06:09:32
【问题描述】:

我最近在 Hostgator 上发布了我的网站,但我遇到了会话问题。 我在多个页面上有一个会话开始:config.php、login.php、logout.php、index.php。

我已经尝试了所有方法,包括检查空格、添加到 .httpaccess 文件、添加 @ob_start()...但似乎没有任何效果。 在 error.log 我有以下错误:

PHP 警告:session_start():当标头时无法启动会话 已在第 3 行的 ../config.php 中发送

你能帮帮我吗?

【问题讨论】:

    标签: php session


    【解决方案1】:

    您应该将session_start() 放在脚本的最开头

    config.php

    <?php
    session_start();
    
    // do your other code here
    

    在您的子视图(如 index)中,您应该将 config.php 放在行首,或者制作一个单独的 php 文件(如 session.php)并将其包含在脚本的最开头。

    错误的原因是会话正在尝试启动,但页面已经发送到浏览器或呈现。

    或者你在开始标签中有一个空格?

    【讨论】:

    • 你的意思是什么,在你的子视图中,比如索引,你应该把 config.php 放在行的开头吗?" 在另一个文件中创建会话有什么帮助?
    • 我的意思是你应该为它创建一个文件,在脚本的最开始行包含它
    • 不幸的是,错误仍然存​​在,但它显示“PHP 警告:session_start():当标头已在第 1 行的 ..session.php 中发送时无法启动会话”而不是说错误是在 config.php 中
    • 你能把整个代码贴在这里吗?
    【解决方案2】:

    会话开始应该放在脚本的顶部。并且不要重复。为避免错误,只需在 session_start 命令之前添加一个“@”。示例

    @session_start();
    

    【讨论】:

    • 在较新的 php @ 或 surpression 不再沉默
    猜你喜欢
    • 1970-01-01
    • 2019-09-25
    • 2014-06-24
    • 2017-08-29
    • 2018-01-29
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多