16

可能重复:
已经启动的 PHP 会话

我在 windows 和 Mac 上运行了我的 PHP 项目,代码相同。但是当我在 Windows 而非 Mac 中运行我的项目时出现此错误。

错误信息是。

A session had already been started - ignoring session_start()

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

4

4 回答 4

44

您说您以支票开始会话:

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

事实是 $_SESSION 始终存在,如果您没有在其中放入任何内容,那么它将始终为空,因此该语句将始终返回 true。

于 2012-12-07T10:10:31.953 回答
5

我不知道为什么 windows 显示错误而 Mac 不显示。但是您可以尝试全部替换the session_start()

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

这可能会帮助你..

于 2012-12-07T08:30:15.887 回答
5

此消息是一个E_NOTICE. 您只在 Windows 机器上看到它的原因很可能是因为您的error_reporting设置不同。

如果你搜索php.inierror_reporting应该排除E_NOTICE如果你不想看到它。

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

于 2012-12-07T10:05:48.637 回答
0

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

于 2012-12-07T08:11:50.187 回答