如何避免在会话开始时出错[重复]

Posted

技术标签:

【中文标题】如何避免在会话开始时出错[重复]【英文标题】:how to avoid getting error on session start [duplicate] 【发布时间】:2017-09-25 02:51:06 【问题描述】:
<?php
if(session_id() == '' || !isset($_SESSION))
session_start();
?>

我的所有页面中都有这行代码......它位于我脚本的最顶部......但不幸的是,我的一个脚本出现错误,但其他页面没有出错。 ..我试图搜索它,但他们说它需要在 html 之前的脚本顶部.. 正是我所做的......但我不知道为什么我的一个页面上出现错误..我当我开始将其上传到我的 cpanel 服务器时发现此错误.. 但在我的本地服务器上它完全正常工作.. 这是我收到的警告消息.. 当我试图在我的一个脚本上删除它时,它给了我错误消息,我的页面运行不正常

警告: session_start():无法发送会话缓存限制器 - 标头已发送

【问题讨论】:

session_start() 放在顶部。检查是否设置了会话变量。 或者这个,Check if PHP session has already started。 造成这种情况的典型原因是&lt;?php 标记之前的任何空格。注意zero-width space ohhhh 我现在看到了...这是因为声明 @LionSmith 确定 :) 很高兴它有帮助 【参考方案1】:

按照the comment made by OP@sup>

发帖

如果您在调用 session_start() 之前有输出,则会发生这种情况。最典型的罪魁祸首是&lt;?php 标记前的空格(或任何字符)(还要注意zero-width space 字符)。

【讨论】:

【参考方案2】:

session_start() 函数需要是第一个

<?php
session_start();
if(session_id() == '' || !isset($_SESSION))
?>

【讨论】:

“session_start() 函数必须是第一个” 不是。 OP 正在检查会话是否在启动之前尚未启动。在session_start() 之前有一个if() 条件是可以的,只要在它之前没有发送任何标题。 我试过了,但没有任何反应,我仍然收到错误消息...在我的服务器上...

以上是关于如何避免在会话开始时出错[重复]的主要内容,如果未能解决你的问题,请参考以下文章

phpMyAdmin - 会话开始期间出错;

PHP中的会话已经开始错误[重复]

我可以通过使用服务总线会话插入事件中心来避免重复事件吗?

如何计算用户会话的开始和结束时间? [重复]

会话固定 - 在会话中访问值时出错

在 PHP 中销毁会话时出错