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,所以问题随机出现?即使代码没有任何更改,它是否停止/开始工作?