Undefined variable: $_SESSION

Я получаю ошибки E_NOTICE в основном файле CakePHP, когда он пытается ссылаться на нескончаемый или неустановленный сеанс (cake/libs/cake_session.php line 372):

function read($name = null) {
    if (is_null($name)) {
        return $this->__returnSessionVars();
    }
    if (empty($name)) {
        return false;
    }
    $result = Set::classicExtract($_SESSION, $name);
}

Я выполнил поиск через свой код (в каталоге app/), и я не могу найти ссылки на $_SESSION или session_destroy. Я что-то пропустил?

Эта ошибка появляется, когда я пытаюсь выполнить любые модульные тесты. Это нормально? Я очистил каталог cake/ и заменил его на другой (той же версии), чтобы убедиться, что я не случайно не модифицировал что-либо в основных файлах, но я все равно получаю ту же ошибку. Я не уверен, что это всего лишь недостаток в рамках или что-то еще.

ИЗМЕНИТЬ

Ниже приведены результаты тестового запуска в командной строке:

Welcome to CakePHP v1.3.11 Console
---------------------------------------------------------------
App : app
Path: /var/www/program/app
---------------------------------------------------------------
CakePHP Test Shell
---------------------------------------------------------------
Running app case models/owners_equity
E_NOTICE: Undefined variable: _SESSION in /var/www/program/cake/libs/cake_session.php on line 372
E_NOTICE: Undefined variable: _SESSION in /var/www/program/cake/libs/cake_session.php on line 372
ERROR->Unexpected PHP error [Undefined variable: _SESSION] severity [E_NOTICE] in [/var/www/program/cake/libs/cake_session.php line 372]
    in testGenerateOwnerWithdrawals
    in BalanceTestCase
    in /var/www/program/app/tests/cases/models/owners_equity.test.php

ERROR->Unexpected PHP error [Undefined variable: _SESSION] severity [E_NOTICE] in [/var/www/program/cake/libs/cake_session.php line 372]
    in testGenerateOwnerWithdrawals
    in BalanceTestCase
    in /var/www/program/app/tests/cases/models/owners_equity.test.php

Ответы

Ответ 1

Оказалось, что в AppModel появился дополнительный код:

в beforeFind и afterFind:

App::Import("Session");
$session = new CakeSession();
$sim_id = $session->read("Simulation.id");

Я не знаю почему, но в этом и была проблема. Удаление этих строк устранило проблему, с которой я столкнулся.

Ответ 2

Вам нужно, чтобы вы запустили сеанс в верхней части каждого PHP файла, где вы хотите использовать супергруппу $_SESSION. Вот так:

<?php
  session_start();
  echo $_SESSION['youritem'];
?>

Вы забыли сеанс HELPER.

Проверьте эту ссылку: book.cakephp.org/2.0/en/core-libraries/helpers/session.html