警告:session_start():试图用日语字符销毁 PHP 5.4 上未初始化的会话错误


Warning: session_start(): Trying to destroy uninitialized session error on PHP 5.4 with Japanese characters

我有一个标准的oscommerce安装,当会话变量包含多字节字符(例如日语)时,它会创建错误"警告:session_start():试图销毁未初始化的会话"。 堆栈跟踪并没有揭示导致问题的原因,除了它是在以下语句的会话类文件中引起的:

...
return session_start();

错误是由如下变量引起的:

$shipping['method'] = {Japanese character string}
tep_start_session('shipping');

。然后在每次后续页面加载时都会遇到错误。

任何想法都非常感谢!

事实证明,这是由oscommerce中的一个复杂原因引起的。我在其他国际网站上注意到了同样的错误,因此我想我会发布答案,因为其他地方讨论的信息很少。

许多变量存储在会话中,这些会话可能存储在MySQL数据库中。

因此,将MySQL数据库中"会话"表的排序规则更改为utf8_general_ci以允许在数据库存储会话中正确存储和检索多字节字符至关重要。