2012-03-10 15 views
15

sto ottenendo E_NOTICE errori in un file di CakePHP nucleo quando si tenta di fare riferimento una sessione non-set o unset (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); 
} 

Ho fatto una ricerca attraverso il mio codice (nell'app/directory) e non riesco a trovare riferimenti a $_SESSION o session_destroy. Mi sto perdendo qualcosa?

Questo errore si verifica quando si tenta di eseguire qualsiasi test dell'unità. È normale? Ho eliminato la directory cake/ e l'ho sostituita con un'altra (stessa versione) solo per essere sicuro di non aver inavvertitamente modificato qualcosa nei file core, ma ottengo lo stesso errore. Non sono sicuro se questo è solo un difetto nel quadro o qualcos'altro.

EDIT

Ecco i risultati del test eseguito sulla riga di comando:

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

è necessario assicurarsi di avviare la sessione: session_start(); – Ghostman

+0

Non ho familiarità con Cake, ma potresti semplicemente inserire un session_start() all'inizio del file (o in qualsiasi punto prima della riga che presenta errori). –

+0

esegui il test dell'unità sulla riga di comando? Qual è il messaggio di errore esatto? –

risposta

3

Venne fuori c'era qualche codice aggiuntivo nel AppModel che è stato a confondere le cose:

in beforeFind e afterFind:

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

Non lo so perché, ma quello era il problema. Rimozione di quelle linee risolto il problema che stavo avendo.

61

È necessario fare in modo di avviare la sessione nella parte superiore di ogni file PHP in cui si desidera utilizzare il superglobale $_SESSION. In questo modo:

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

Hai dimenticato la sessione HELPER.

controllare questo link: book.cakephp.org/2.0/en/core-libraries/helpers/session.html

+0

Sto chiamando 'Configure :: write ('Session.start', true);' nel mio file core.php. La torta non dovrebbe prendersene cura da lì? –

+1

hai provato session_start(); sulla prima riga – Ghostman

+0

controllare il collegamento nella mia risposta aggiornata – Ghostman

Problemi correlati