在本地主机上工作,但在Web服务器上不工作....session_start():无法发送会话缓存限制器-头部已发送。
在本地主机上工作,但在Web服务器上不工作....session_start():无法发送会话缓存限制器-头部已发送。
我是一个PHP的新手,尝试了各种方法,也研究了论坛的帖子,但是一周过去了,我感觉离解决问题还是很远。
本地版本运行正常,没有问题。但是,当我上传它时,它会显示以下错误信息:
session_start(): Cannot send session cache limiter - headers already sent (output started at /home/idigital123/public_html/index.php:2) in /home/idigital123/public_html/index.php on line 41
以下是代码:
= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();} //声明两个会话变量并为它们赋值 $_SESSION['MM_Username'] = $loginUsername; $_SESSION['MM_UserGroup'] = $loginStrGroup; if (isset($_SESSION['PrevUrl']) && false) { $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; } header("Location: " . $MM_redirectLoginSuccess ); } else { header("Location: ". $MM_redirectLoginFailed ); } } ?>
问题原因:该问题的原因是在服务器上出现了无法发送会话缓存限制器的错误。这通常是因为在发送HTTP头之前,有输出被发送到浏览器。
解决方法:要解决这个问题,可以尝试以下几个步骤:
1. 检查是否在代码中的会话启动之前有任何输出。在这种情况下,将代码移动到输出之前。
2. 确保在代码中没有使用任何输出函数(如echo或print)在会话启动之前。
3. 检查文件的编码格式,确保没有BOM字符。
4. 确保没有在会话启动之前包含任何空格或换行符。
5. 确保不要在包含文件中发送输出。
根据以上内容,问题的原因是在服务器上出现了无法发送会话缓存限制器的错误。解决方法是检查代码中是否有输出函数的使用,并确保在会话启动之前没有任何输出。另外,还要确保文件的编码格式正确,并且没有在会话启动之前包含任何空格或换行符。如果问题仍然存在,可以尝试检查是否在包含文件中发送了输出。
问题的出现原因:
在网页服务器上运行时,会出现"session_start(): Cannot send session cache limiter - headers already sent"错误。这个错误的原因是在发送HTTP响应头之后,再尝试发送Session数据,而这是不允许的。常见的导致这个错误的原因有以下几个:
1. 在PHP代码中使用了session_start()函数之前有输出了内容,如HTML标签、空格、换行等。
2. 在包含PHP文件中使用了session_start()函数,而这个文件中有输出了内容。
3. 在PHP文件中使用了session_start()函数之前,有其他PHP文件被包含或引用,并且这些文件中有输出了内容。
解决方法:
要解决这个问题,可以采取以下几种方法:
1. 将session_start()函数放在PHP代码的最开始位置,确保在之前没有输出任何内容。
2. 检查包含的PHP文件,确保在其中没有输出任何内容。
3. 检查被引用的其他PHP文件,确保在其中没有输出任何内容。
4. 如果在PHP文件中有输出内容并且无法避免,可以考虑使用ob_start()函数将输出缓存起来,直到session_start()函数被调用。
需要注意的是,这个错误可能会因为不同的代码和环境而有所不同,解决方法也可能会因情况而异。因此,最好的解决方法是仔细检查代码,确保在调用session_start()函数之前没有输出任何内容。
问题原因:
出现这个问题的原因是在向浏览器发送HTTP响应之前,已经有输出内容了。在调用session_start()函数之前,如果有任何输出语句(如echo、print、空格、换行等),都会导致此错误。
解决方法:
1. 检查源文件是否有BOM(字节顺序标记)。BOM会在输出的开头添加不需要的字符,因此需要确保源文件没有BOM。可以使用文本编辑器(如Notepad++)将文件转换为UTF-8编码并保存,以确保没有BOM。
2. 确保session_start()函数在任何输出之前调用。可以将session_start()函数放在代码的最前面,确保在任何输出语句之前调用该函数。
示例代码:
3. 检查文件之间是否存在空格或换行符。空格和换行符也会产生输出,因此需要确保在session_start()函数之前没有任何空格或换行。
4. 检查是否有其他文件在当前文件中包含了输出内容。如果有其他文件在当前文件中包含了输出内容,那么需要确保在包含这些文件之前调用session_start()函数。
示例代码:
通过以上方法,可以解决在本地环境正常运行但在Web服务器上出现"session_start(): Cannot send session cache limiter - headers already sent"错误的问题。