PHP:会话已经启动 - 忽略session_start()仅在Windows中出现

时间:2012-12-07 08:06:11

标签: php

  

可能重复:
  PHP sessions that have already been started

我在Windows上运行了我的PHP项目,并在Mac上运行了相同的代码。但是当我在Windows中运行我的项目时,我得到了这个错误。

错误消息是。

A session had already been started - ignoring session_start()

仅在Windows系统上出现。但在Mac中,我没有收到任何错误消息。  请任何人给我一个解决方案......

4 个答案:

答案 0 :(得分:41)

你说你用支票开始会话:

if(!isset($_SESSION)){
    session_start();
}

事实是$ _SESSION总是存在,如果你没有把东西放进去,那么它将永远是空的,所以这个陈述将总是返回真实。

答案 1 :(得分:5)

我不知道为什么Windows显示错误而Mac不显示。 但您可以尝试将所有the session_start()替换为

if(!isset($_SESSION)) 
    { 
        session_start(); 
    } 

这可能对你有帮助..

答案 2 :(得分:5)

此邮件是E_NOTICE。您只在Windows计算机上看到它的原因很可能是因为error_reporting设置不同。

如果您在php.ini搜索error_reporting,则应排除E_NOTICE,如果您不想看到它。

或者,修复代码以不多次启动会话。理想情况下,您只有一个核心代码文件可以启动您的会话而没有其他session_start()实例(即不要将它放在每个页面上)。然后,您可以在每个页面上包含此项,或创建一个路由模式,以确保在每个页面加载时调用初始化代码。

答案 3 :(得分:0)

在php.ini(http://php.net/session.auto-start)中查看session.auto_start,很可能是会话自动启动