不写入会话 ID.文件中没有空格


Not writing session IDs. No white space in files

我遇到了会话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');

在标题.php中,我有:

<?
require_once '../php/config.php';
require_once 'functions.php';

配置中.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

现在,我想再次强调,我知道没有空白,等价物似乎在英语方面没有问题。

我创建了一个名为testess的文件.php其中包含:

<?php
session_start();
echo "--".session_id();

并将其放在 HE 文件夹中,它可以正常工作而不会出错

我确信这是非常简单的事情,但是几个小时以来一直在尝试不同的事情,完全被难住了。

Chek 如果您的文件是 UTF-8。一些文本编辑器在 UTF-8 文件的开头放了一些代码。检查您包含的文件是否有任何额外的字符。

你可以参考这个SO问题

这可能是 UTF-8 BOM(字节顺序标记)问题。如果 Windows 环境可访问,则可以使用记事本++删除 BOM:

  1. 在记事本++中打开文件
  2. 编码菜单中,选择"以 UTF-8 编码而不使用 BOM"
  3. 然后保存