2012-03-10 9 views
15

Dostaję E_NOTICE błędy w pliku CakePHP rdzenia kiedy próbuje odwoływać się nigdy Włącza lub wyłącza sesji (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); 
} 

Zrobiłem wyszukiwanie poprzez moje kod (w katalogu app /) i nie mogę znaleźć odnośników do $_SESSION lub session_destroy. Czy brakuje mi czegoś?

Ten błąd pojawia się, gdy próbuję uruchomić jakiekolwiek testy jednostkowe. Czy to normalne? Usunąłem katalog cake/ i zastąpiłem go innym (ta sama wersja) tylko po to, aby upewnić się, że nie zmodyfikowałem niczego w plikach core, ale nadal otrzymuję ten sam błąd. Nie jestem pewien, czy jest to tylko usterka w ramach, czy coś innego.

EDIT

Oto wyniki testu na linii poleceń:

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

musisz się upewnić, aby rozpocząć sesję: session_start(); – Ghostman

+0

Nie jestem zaznajomiony z Cake, ale można po prostu umieścić session_start() na górze pliku (lub gdziekolwiek przed wierszem, w którym występują błędy). –

+0

czy uruchamiasz test jednostkowy w linii poleceń? Jaki jest dokładny komunikat o błędzie? –

Odpowiedz

3

Okazało się, że był jakiś dodatkowy kod w AppModel który był brudząc rzeczy:

w beforeFind i afterFind:

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

nie wiem dlaczego, ale taki był problem. Usunięcie tych linii rozwiązało problem, który miałem.

61

co potrzeba upewnij się, aby rozpocząć sesję na początku każdego pliku PHP, gdzie chcesz użyj superglobalu $_SESSION. W ten sposób:

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

Zapomniałeś sesji HELPER.

Sprawdź ten link: book.cakephp.org/2.0/en/core-libraries/helpers/session.html

+0

Nazywam 'Configure :: write ('Session.start', true);' w moim pliku core.php. Czy ciasto nie powinno się nim zajmować? –

+1

nie próbowałeś session_start(); w pierwszym wierszu – Ghostman

+0

sprawdź link w mojej zaktualizowanej odpowiedzi – Ghostman

Powiązane problemy