这是我的代码:
<?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)
答案 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()之前发送任何意外输出。