我遇到了没有编写会话ID的问题。很抱歉,如果这个问题持续了一段时间,但我已经做了很多测试来排除某些事情,所以认为提供我拥有的所有数据是有用的。
对于每项测试,我在Chrome中打开一个新的隐身窗口,以确保在开始新测试之前清除Cookie /会话。
另外,请注意,我正在处理的网站在两个不同的文件夹中有两种不同的语言。英语和希伯来语。
一切都在网站的英文版中正常工作,但在希伯来文中却没有。一些'include'文件位于一个名为/ php /的单独文件夹中,包含在希伯来语和英语一侧。
不确定是否相关,但.htaccess文件包含英语和希伯来语方面的重定向,如下所示:
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteRule ^categories/(.+) /HE/categories.php?pg=$1&type=$2 [L]
在php页面本身(例如,categories.php)上,代码开始:
<?php include_once('header.php');
在header.php中,我有:
<?
require_once '../php/config.php';
require_once 'functions.php';
在config.php中,在希伯来语和英语双方使用,我有:
<?php
session_start();
echo "--".session_id();
在所有情况下,
当我转到页面时:
http://www.goo.com/HE/categories/foo
每次刷新时,都会回显session_id()
的新值在错误日志中,我得到了:
[23-Oct-2013 04:12:41] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - headers already sent by (output started at /home/foo/public_html/HE/header.php:1) in /home/foo/public_html/php/config.php on line 2
[23-Oct-2013 04:12:41] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home/foo/public_html/HE/header.php:1) in /home/foo/public_html/php/config.php on line 2
现在,我想再次强调一点,我没有注意到的空白区域,并且相当于英语方面没有问题。
我创建了一个名为testsess.php的文件,其中包含:
<?php
session_start();
echo "--".session_id();
并将其放在HE文件夹中,这样可以正常运行而不会出现错误
我确信这是非常简单的事情,但是几个小时和几个小时都在尝试不同的事情而且完全被难倒了。
答案 0 :(得分:2)
如果你的文件是UTF-8,那就谢谢。 一些文本编辑器在开始UTF-8文件时添加了一些代码。 检查您包含的文件是否有任何额外字符。
答案 1 :(得分:1)
您可以参考此SO Question
这可能是UTF-8 BOM(字节顺序标记)问题。如果可以访问Windows环境,则可以使用Notepad ++删除BOM: