Php 会话启动,但给出缓存限制器错误

Php 会话启动,但给出缓存限制器错误,php,html,Php,Html,您好,我从过去几天收到这个错误,我已经在谷歌搜索中找到了以下会话解决方案,但这也不适用于我 Warning : session_start(): Cannot send session cache limiter - headers already sent (output started at /home/user/public_html/pages/about-us.php:65) in /home/user/public_html/pages/inc/header.php &l

您好,我从过去几天收到这个错误,我已经在谷歌搜索中找到了以下会话解决方案,但这也不适用于我

Warning
: session_start(): Cannot send session cache limiter - headers already     sent (output started at /home/user/public_html/pages/about-us.php:65) in
/home/user/public_html/pages/inc/header.php


<?php
session_set_cookie_params(0, '/', '.mysite.com');
session_start();
?>
警告
:session_start():无法发送会话缓存限制器-已在中发送标题(输出从/home/user/public_html/pages/about us.php:65开始)
/home/user/public_html/pages/inc/header.php
试试这个:

<?php
ob_start();
session_start();
?>

希望能解决你的问题。

试试这个:

<?php
ob_start();
session_start();
?>

希望可以解决您的问题。

解决方案1:在输出中打印任何内容之前,请调用
会话\u start()
session\u start()
应该是页面上的第一个代码。会话只能在服务器将第一个字节发送到浏览器之前启动,因为会话信息在头中发送,并且在发送第一个字节后不允许修改头。因此,一旦第一个字节离开服务器,就无法返回。因此,确保之前没有任何内容,甚至没有空白:

<?php
    session_start();
    ...
?>

例如,以下操作将不起作用

Hello world.

<?php
    session_start();
    /* Warning occures here because "Hello world." text
     * was already sent to the browser.*/
?>
你好,世界。
以下代码存在相同的问题:

<?php
    echo "Hello world."
    session_start();
    /* Warning occures here because "Hello world." text
     * was already sent to the browser.*/
?>

但是,以下是可以的:

<?php
    session_start();
    echo "Hello world."
?>

您还可以在会话开始之前执行任何不会导致输出打印的操作。例如,您可以轻松地执行以下操作:

<?php
    $i = 5;
    session_start();
?>


解决方案2:使用输出缓冲 如果您不希望在请求开始时启动会话,但希望在以后启动会话,则必须使用输出缓冲区。Output buffer可确保通常会立即发送到浏览器的内容会在服务器端进行缓冲,然后在整个页面准备就绪或分块发送到浏览器,具体取决于您实际使用的方式。缩小的原因是用户将不得不等待页面更长的时间。您可以通过调用以下命令启动输出缓冲区:

<?php
    ob_start();
?>

但是,请确保在打印任何内容之前调用此is代码-即,将此作为第一个命令。稍后,一旦您完成了会话启动或HTTP头的任何其他修改,或者页面完全生成,只需调用

<?php
    ob_end_flush();
?>

完成输出缓冲并打印出缓冲区中的内容。

解决方案1:在将任何内容打印到输出之前调用
session\u start()
session\u start()
应该是页面上的第一个代码。会话只能在服务器将第一个字节发送到浏览器之前启动,因为会话信息在头中发送,并且在发送第一个字节后不允许修改头。因此,一旦第一个字节离开服务器,就无法返回。因此,确保之前没有任何内容,甚至没有空白:

<?php
    session_start();
    ...
?>

例如,以下操作将不起作用

Hello world.

<?php
    session_start();
    /* Warning occures here because "Hello world." text
     * was already sent to the browser.*/
?>
你好,世界。
以下代码存在相同的问题:

<?php
    echo "Hello world."
    session_start();
    /* Warning occures here because "Hello world." text
     * was already sent to the browser.*/
?>

但是,以下是可以的:

<?php
    session_start();
    echo "Hello world."
?>

您还可以在会话开始之前执行任何不会导致输出打印的操作。例如,您可以轻松地执行以下操作:

<?php
    $i = 5;
    session_start();
?>


解决方案2:使用输出缓冲 如果您不希望在请求开始时启动会话,但希望在以后启动会话,则必须使用输出缓冲区。Output buffer可确保通常会立即发送到浏览器的内容会在服务器端进行缓冲,然后在整个页面准备就绪或分块发送到浏览器,具体取决于您实际使用的方式。缩小的原因是用户将不得不等待页面更长的时间。您可以通过调用以下命令启动输出缓冲区:

<?php
    ob_start();
?>

但是,请确保在打印任何内容之前调用此is代码-即,将此作为第一个命令。稍后,一旦您完成了会话启动或HTTP头的任何其他修改,或者页面完全生成,只需调用

<?php
    ob_end_flush();
?>


完成输出缓冲并打印出缓冲区中的内容。

ob\u start()如果session\u start()命令仅位于以下一行,则不需要使用ob\u start()。。。此外,盲目地使用它不是一个好方法-您应该解释输出缓冲区是如何工作的,以及打开它的大小是什么。如果session_start()命令仅位于下面一行,则不需要ob_start()。。。此外,盲目地使用它不是一个好办法——你应该解释一下输出缓冲区是如何工作的,以及打开它的规模是什么。我已经尝试过这两个选项,但有时它不起作用,在一两天之后,同样的会话问题再次出现。@Omkar,那么这个问题是随机出现的吗?即使代码没有任何更改,它也会停止/开始工作吗?我已经尝试过这两个选项,但有时在一两天后,同样的会话问题再次出现。@Omkar,所以问题随机出现?即使代码没有任何更改,它是否停止/开始工作?