【发布时间】:2012-03-27 20:24:27
【问题描述】:
当核心 CakePHP 文件尝试引用从未设置或未设置的会话 (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
【问题讨论】:
-
你需要确保启动会话:session_start();
-
我对 Cake 不熟悉,但你可以在文件顶部(或出错行之前的任何位置)放置一个 session_start()。
-
你在命令行上运行单元测试吗?确切的错误信息是什么?
-
@Shiplu 我已经添加了命令行的输出
标签: php session cakephp e-notices