PHP: сеанс уже запущен - игнорирование session_start() происходит только в окнах

Возможный дубликат:
Уже начатые сеансы PHP

Я запустил свой PHP-проект на окнах, а также Mac с тем же кодом. Но я получил эту ошибку, когда запускаю свой проект в окнах, а не на Mac.

сообщение об ошибке.

A session had already been started - ignoring session_start()

который приходит только в системе Windows. Но в Mac я не получил сообщение об ошибке.  Пожалуйста, дайте мне решение.....

Ответы

Ответ 1

Вы сказали, что вы запускаете сеанс с проверкой:

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

Дело в том, что $_SESSION всегда существует, и если вы не помещаете что-то в него, тогда он будет всегда пустым, поэтому statment вернется всегда true.

Ответ 2

Я не знал, почему окна показывают ошибку и Mac не делают. Но вы можете попробовать заменить все the session_start() на

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

Это поможет вам..

Ответ 3

Это сообщение E_NOTICE. Причина, по которой вы видите это только на машине с Windows, скорее всего, потому что у вас есть error_reporting по-разному.

Если вы выполняете поиск php.ini для error_reporting, вы должны исключить E_NOTICE, если вы не хотите его видеть.

В качестве альтернативы, исправьте свой код, чтобы не запускать сеанс более одного раза. В идеале у вас будет только один файл основного кода, который запустит ваш сеанс, а другие экземпляры session_start() (т.е. Не помещают его на каждую страницу). Затем вы можете включить это на каждой странице или создать шаблон маршрутизации, который обеспечит, чтобы код инициализации вызывался в каждой папке.

Ответ 4

Посмотрите на session.auto_start в php.ini(http://php.net/session.auto-start), скорее всего сеанс автоматически запустится