【问题标题】:Session start on an empty page causes an error; session_start(): Cannot send session cache limiter会话在空页面上启动会导致错误; session_start():无法发送会话缓存限制器
【发布时间】:2016-04-25 05:50:49
【问题描述】:

嗨,我有一个空的 php 文件,里面只有一行代码

<?php session_start(); ?>

除了上面的代码之外,没有 html 标记或任何 php 代码。

在本地主机上它不会触发错误,但是当它在服务器上并且我访问该页面时,会在错误日志上打印一个新行,上面写着

[25-Apr-2016 05:43:34 UTC] PHP 警告:session_start():无法发送会话缓存限制器 - 已在 /path/ 中发送标头(输出开始于 path/to/file.php:1)第 1 行的 to/file.php

服务器正在运行 apache 和 php 5.6(如果相关),我也尝试删除 .htacces 文件以防万一这是导致问题的原因,但仍然没有运气。

谁能指出我正确的方向,看看是什么导致了问题?谢谢!

【问题讨论】:

  • 您是直接访问这个 PHP 文件吗?在输出任何内容后,是否有包含在某处调用session_start 的 PHP 脚本?
  • 是的。我正在访问像“domain.com/file.php”这样的页面。在不同页面的某处包含 session_start() 但在当前页面上没有
  • 我假设它在第 1 行(上面没有空格)。我发现这个 (serverfault.com/questions/618316/…) 似乎从未得到过验证的答案。也许尝试将您的代码分成三行:1.&lt;?php 2.session_start(); 3.?&gt;
  • 错误更改为“...在第 2 行的 /path/to/file.php 中已发送标头(输出开始于 path/to/file.php:1)”。开始的输出仍然在同一行。但是error_log上仍然打印了一个错误
  • 感谢按位,但 Umair 解决了我的问题,感谢您的意见!

标签: php session


【解决方案1】:

问题:有时您的代码文件中有不可见的字符。

解决方案: 所以现在简单地说,如果想修复错误,那么这里是快速的方法: 我确定您必须使用某种代码编辑器,只需将编码为“UTF-8 With BOM”的 php 文件保存,然后将保存的文件上传到您的站点,然后访问您的文件,您就没有问题了.. !

截图以获得更好的指导:

参考网址:

How to fix "Headers already sent" error in PHP

如果这不能解决您的问题,那么请使用此解决方案:

  1. 确保&lt;?php 之前绝对有没有空格
  2. session_start() 放在ob_start() 之前而不是之后。
  3. 如果失败,请尝试将 session_start() 注释为您的 包括可能已经开始会话,如下所示:/** session_start(); **/

【讨论】:

  • 哇,谢谢!这解决了我的问题。这是我第一次读到这个问题,这个问题具体叫什么,以便我可以对此进行更多研究?使用编码保存解决了我的问题,准确地说
  • @JustinMercado : 为参考 URL 更新答案,不客气。完全没有问题。如果您觉得需要,请不要犹豫,寻求更多帮助..!
猜你喜欢
  • 2016-12-14
  • 2011-11-14
  • 2016-05-28
  • 2014-06-04
  • 2023-04-07
  • 2018-01-29
  • 2017-12-27
  • 2012-05-23
  • 2013-09-11
相关资源
最近更新 更多