2012-03-10 19 views
15

Me estoy E_NOTICE errores en un archivo de CakePHP cuando se intenta hacer referencia a una sesión nunca configuración asociada o no (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); 
} 

que he hecho una búsqueda a través de mi código (en la aplicación/directorio) y no puedo encontrar referencias a $_SESSION o session_destroy. ¿Me estoy perdiendo algo?

Este error aparece cuando trato de ejecutar cualquier prueba unitaria. ¿Esto es normal? Limpié el directorio cake/ y lo reemplacé con otro (la misma versión) solo para asegurarme de que no había modificado inadvertidamente nada en los archivos centrales, pero sigo teniendo el mismo error. No estoy seguro de si esto es solo un defecto en el marco o algo más.

EDITAR

Éstos son los resultados de la prueba de funcionamiento en la línea de comandos:

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

necesita asegurarse de iniciar la sesión: session_start(); – Ghostman

+0

No estoy familiarizado con Cake, pero podría simplemente poner un session_start() en la parte superior del archivo (o en cualquier lugar antes de la línea que se equivoca). –

+0

¿ejecutas prueba de unidad en la línea de comando? ¿Cual es el mensaje de error exacto? –

Respuesta

3

Resultó que había algo de código adicional en el AppModel que fue ensuciar las cosas:

en beforeFind y afterFind:

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

No sé por qué, pero ese era el problema. Eliminar esas líneas solucionó el problema que estaba teniendo.

61

Usted necesita asegurarse de que para iniciar la sesión en la parte superior de cada archivo PHP donde desea use el superglobal $_SESSION. De esta manera:

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

Has olvidado la Sesión AYUDANTE.

Comprobar este enlace: book.cakephp.org/2.0/en/core-libraries/helpers/session.html

+0

llamo 'Configure :: write ('Session.start', true);' en mi archivo core.php. ¿No debería Cake hacerse cargo de eso desde allí? –

+1

intenté session_start(); en la primera línea – Ghostman

+0

revise el enlace en mi respuesta actualizada – Ghostman