2012-03-10 3 views
15
은 결코 설정하거나 해제 세션 ( cake/libs/cake_session.php line 372) 참조 할 때 나는 핵심 CakePHP의 파일에 E_NOTICE 오류를 받고 있어요

:

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

세션을 시작해야합니다. session_start(); – Ghostman

+0

저는 Cake에 익숙하지 않습니다 만, session_start()를 파일의 맨 위에 놓을 수 있습니다. –

+0

유닛 테스트를 명령 줄에서 실행합니까? 정확한 오류 메시지 란 무엇입니까? –

답변

3

이 일을 엉망으로 된 AppModel이 몇 가지 추가 코드가 있었다 정보가있다 이유는이지만 그게 문제였습니다. 그 줄을 제거하면 내가 가지고 있던 문제가 해결되었습니다.

61

당신은 당신이 원하는 곳에 모든 PHP 파일의 상단에있는 세션을 시작할 수 있는지 확인해야합니다 : 여기에 편집

명령 줄에서 테스트 실행의 결과입니다 슈퍼 글로벌 ($_SESSION)을 사용하십시오. 이와 같이 :

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

세션 HELPER을 잊었습니다.

확인이 링크 :

beforeFind에서

afterFind :

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

모르겠어요 book.cakephp.org/2.0/en/core-libraries/helpers/session.html

+0

core.php 파일에서 Configure :: write ('Session.start', true);를 호출하려고합니다. 케이크가 거기서 돌봐야하지 않니? –

+1

시도해 봤어? session_start(); 첫 번째 줄에 – Ghostman

+0

내 업데이트 된 답변의 링크를 확인 – Ghostman