I'm getting E_NOTICE
errors in a core CakePHP file when it tries to reference a never-set or unset session (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); }
I've done a search through my code (in the app/ directory) and I can't find references to $_SESSION
or session_destroy
. Am I missing anything?
This error shows up when I try to run any unit tests. Is this...normal? I've cleared out the cake/
directory and replaced it with another one (same version) just to make sure that I hadn't inadvertently modified anything in the core files, but I still get the same error. I'm not sure if this is just a flaw in the framework or something else.
EDIT
Here are the results of the test run on the command line:
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
You need make sure to start the session at the top of every PHP file where you want to use the $_SESSION
superglobal. Like this:
<?php session_start(); echo $_SESSION['youritem']; ?>
You forgot the Session HELPER.
Check this link : book.cakephp.org/2.0/en/core-libraries/helpers/session.html
Turned out there was some extra code in the AppModel that was messing things up:
in beforeFind
and afterFind
:
App::Import("Session"); $session = new CakeSession(); $sim_id = $session->read("Simulation.id");
I don't know why, but that was what the problem was. Removing those lines fixed the issue I was having.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With