【问题标题】:PHP Warning: session_start(): Cannot send session cache limiter - headers already sentPHP 警告:session_start():无法发送会话缓存限制器 - 标头已发送
【发布时间】:2014-06-04 23:24:34
【问题描述】:

我在这里How to fix "Headers already sent" error in PHP 阅读了答案,但这并不能解决我的错误。

我不明白,session_start() 是我在文件中调用的第一件事,我使用的是没有 BOM 编码的 UTF-8。但我仍然收到这个 php 警告。

错误:

PHP Warning:  session_start(): Cannot send session cache limiter - headers already sent (output started at /home/feyzprod/public_html/nearby/register.php:1) in /home/feyzprod/public_html/nearby/register.php on line 1

我的文件编码是

Encoding is UTF-8 without BOM

代码:

<?php session_start();
    require_once('bdservice.php');
    require_once('script.php');

    $bd = new BDService();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">

<title>NearBy Me : Courtier immobiliers</title>

<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="css/ico.css" />
<link rel="stylesheet" href="https://formoid.net/forms/30/17477/formoid-default-skyblue.css" type="text/css" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="https://formoid.net/lib/iframe.js"></script>
<link rel="stylesheet" href="https://formoid.net/lib/form.css" type="text/css" />

<script>

</script>

</head>

<body>
    <div class='bar'>
        <div class='header'>
            <div id='left'></div>

            <div id='right'>
                <div style='margin-top:35px;'>
                <span><a href='#'>Français</a> | <a href='#'>Anglais</a></span><br/><br/>
                <?php
                    if(isset($_SESSION['authentification']))
                    {
                        echo "<a href='profil.php'><button class=\"large green button\">Profil</button></a>";
                    }
                    else
                    {
                        echo "<a href='connexion.php'><button class=\"large green button\">Login</button></a>";
                    }
                ?>
                </div>
            </div>

            <div style='clear:both;'></div>
        </div>
    </div>

    <div class='inscription'>
        <img src='images/inscription.png' alt='inscription' title='inscription' /><br/><br/>
            <?php
                if(!isset($_POST['Valider']))
                {

【问题讨论】:

  • 您只能在一个文件中启动一次会话!你在 bdservice.php 或 script.php 上没有另一个 session_start() 吗?
  • bdservice.php 和 script.php 没有 session_start()
  • 尝试在session_start();之前使用ob_start();
  • 我仍然收到同样的警告
  • 如果有session.auto_start = 1,请检查您的php.ini,如果有,请更改为session.auto_start = 0

标签: php session


【解决方案1】:

/home/feyzprod/public_html/nearby/register.php 的开头可能有一个空格或其他空白字符,在您的错误中表明它位于第 1 行。

空格将回显到输出,这意味着您不能再写入标题,这是 PHP 想要通过 cookie 设置会话信息的地方。

【讨论】:

  • /home/feyzprod/public_html/nearby/register.php 的开头是我的原始帖子中显示的代码,我的文件使用 utf-8 没有 BOM,开头应该没有空格文件
  • @seb 听起来文件开头确实有一些隐藏的换行符/空白字符...
猜你喜欢
  • 2016-05-28
  • 2018-01-29
  • 2016-12-14
  • 2012-05-23
  • 2013-09-11
  • 2020-07-02
  • 1970-01-01
  • 2011-11-14
  • 2017-08-29
相关资源
最近更新 更多