PHP - 即使是最基本的会话也无法启动

时间:2015-11-03 12:55:01

标签: php

这是我的代码:

<?php 
session_start();

没有其他包括,空格或任何东西。整个文件有两行。

我得到的输出:

  

警告:session_start():无法发送会话cookie - 已在C:\ xampp \ htdocs \ webpage \ test.php中发送的标头(输出从C:\ xampp \ htdocs \ webpage \ test.php:1开始)在第2行

     

警告:session_start():无法发送会话缓存限制器 - 已在C:\ xampp \ htdocs \ webpage \ test.php中发送的标头(输出从C:\ xampp \ htdocs \ webpage \ test.php:1开始)在第2行

我正在使用Xampp。有什么想法吗?

编辑:来自php.ini

session.save_handler=files
session.save_path="C:\xampp\tmp" (which exists and is writable by everyone)

4 个答案:

答案 0 :(得分:3)

根据我的评论(询问编码是什么),它是一个编码问题(根据你所说的那样)。

如果UTF-8是您必须使用的格式,则需要保存该文件不含 BOM(字节顺序标记)。

计为输出。

更多信息可以在这里找到:

关于使用和不使用BOM之间的差异,请阅读Stack上的以下内容:

  

&#34; @Fred似乎是编码。奇怪的是我正在使用PHPStorm。不应该编码总是UTF8吗? - 雅克&#34;

并非总是如此。某些应用程序需要使用UTF-8格式(数据库,字符重音等)。您可以使用任何您想要的格式,只要它适用于它的使用方式。

如果您不需要使用会话,请不要添加session_start();

以下是W3C网站上的一篇文章,您可以阅读:

和Stack上的一个:

如果你有时间:

您可以使用&#34来进一步研究;为什么我应该使用utf-8?&#34;作为您最喜欢的搜索引擎中的关键字。

答案 1 :(得分:1)

检查会话是否已启动。

推荐的PHP版本&gt; = 5.4.0

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

来源:http://www.php.net/manual/en/function.session-status.php

对于PHP的版本&lt; 5.4.0

if(session_id() == '') {
    session_start();
}

答案 2 :(得分:0)

在打开PHP标记后添加一行:

<?php

ob_start(); //Add this!
session_start();

答案 3 :(得分:0)

除了别人说的,你还可以在你的php.ini中启用输出缓冲。如果设置为例如:

output_buffering = 4096

然后在发送到浏览器之前,所有输出都将被缓冲(最多4k)。这样可以防止在session_start()之前发送任何意外输出。