32

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);
}

$_SESSION(app /ディレクトリ内の)コードを検索しましたが、またはへの参照が見つかりません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
4

4 に答える 4

98

$_SESSIONスーパーグローバルを使用するすべての PHP ファイルの先頭でセッションを開始する必要があります。このような:

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

セッションヘルパーを忘れました。

このリンクを確認してください: book.cakephp.org/2.0/en/core-libraries/helpers/session.html

于 2012-03-10T21:04:17.590 に答える
3

AppModelに、物事を台無しにしていた余分なコードがいくつかあることが判明しました。

beforeFindafterFind:_

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

理由はわかりませんが、それが問題でした。これらの行を削除すると、私が抱えていた問題が修正されました。

于 2012-03-10T22:06:05.703 に答える