【问题标题】:Odd session / url error奇怪的会话/网址错误
【发布时间】:2017-07-15 08:41:05
【问题描述】:

我网站上的一个页面出现了一个非常奇怪的错误,尤其是只有一个网址。

我在页面的第一行有一个 PHP 包含。包含文件的第一行是session_start();

页面加载时出现此错误:

警告:session_start(): 无法发送会话 cookie - 标头已由...发送 //etc

这很奇怪,因为会话开始是页面上的第一件事,并且没有其他尝试开始会话。然而,还有更奇怪的事情正在发生......

我有许多其他页面使用基本相同的代码和不同的内容,它们运行良好,没有错误。我用另一个页面的代码替换了问题页面中的整个代码,基本上是创建一个克隆。 加载页面时仍然会出现错误! WTH?

有什么想法吗?

【问题讨论】:

  • 显示你的代码。
  • 你回传页面吗?,你包括嵌套的php文件吗?
  • @urfusion 我很确定代码只会混淆问题。如果有人可以暗示问题可能是什么,我会很乐意发布,但我不希望这篇文章陷入毫无意义的代码中,你知道会发生什么。
  • @C.Fasolin - 页面上有一个使用帖子的表单,并且没有嵌套包含。
  • 通常headers already sent by在使用页眉时会显示错误,但在此之前有打印内容。

标签: php session


【解决方案1】:

你可能对BOM有问题,有些编辑器不显示这个标记,所以你看不到它,但它会在会话开始前发送到浏览器。

如何在 Windows Notepad++ 上删除 BOM

Remove a BOM character in a file

Linux 使用 awk

Using awk to remove the Byte-order mark

【讨论】:

  • 呃...好的。解决方案是什么?此外,如前所述,我从工作页面复制了整个代码并得到了同样的错误。
  • 您使用的是 Linux、Windows 还是 Mac?您需要一些编辑器来显示此标记,以便您删除它。
  • 谢谢。我在 Windows 上,我认为主机使用的是 Linux。我正在使用记事本++(请参阅其他答案中的评论)
【解决方案2】:

可能是BOM有问题,使用Notepad++解决这个问题

  • 下载 Notepad++ 并在此处打开文件,删除

  • 之前的所有花哨字符
  • 确保

  • 之前没有空格字符,如“”、制表符或换行符
  • 在 Notepad++ 中单击编码,然后单击 UTF-8 without BOM 将文件转换为不带 BOM 的 UTF-8,然后保存。

  • 还添加 ob_start();在 session_start() 之前;为了安全。

【讨论】:

  • 谢谢,我已经在使用 Notepad++ 但我按照您的其他说明进行操作并得到同样的错误。
猜你喜欢
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
相关资源
最近更新 更多