未設定または未設定のセッション(E_NOTICE
)を参照しようとすると、コアCakePHPファイルで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);
}
(app /ディレクトリで)コードを検索しましたが、$_SESSION
またはsession_destroy
への参照が見つかりません。私は何かが欠けていますか?
このエラーは、ユニットテストを実行しようとすると表示されます。これは...正常ですか? cake/
ディレクトリを空にし、コアファイルの内容を誤って変更していないことを確認するために別のディレクトリ(同じバージョン)に置き換えましたが、それでも同じエラーが発生します。これが単なるフレームワークの欠陥なのか、それとも何か他のものなのかはわかりません。
[〜#〜] edit [〜#〜]
コマンドラインでのテスト実行の結果は次のとおりです。
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
AppModelには、混乱を招くコードが追加されていることがわかりました。
beforeFind
およびafterFind
で:
App::Import("Session");
$session = new CakeSession();
$sim_id = $session->read("Simulation.id");
whyはわかりませんが、それが問題でした。これらの行を削除すると、私が抱えていた問題が修正されました。
$_SESSION
スーパーグローバルを使用するすべてのPHPファイルの先頭でセッションを開始することを確認する必要があります。このように:
<?php
session_start();
echo $_SESSION['youritem'];
?>
Session HELPERを忘れました。
このリンクを確認してください: book.cakephp.org/2.0/en/core-libraries/helpers/session.html