2012-03-10 26 views
15

それは、設定されていないか、未設定のセッションを参照しようとしたとき、私はコアCakePHPのファイルにE_NOTICEエラーを取得しています(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または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 
+1

セッションを開始する必要があります。 session_start(); – Ghostman

+0

私はCakeに慣れていませんが、session_start()をファイルの先頭(またはエラーが出る行の前のどこか)に置くことができます。 –

+0

ユニットテストをコマンドラインで実行しますか?正確なエラーメッセージは何ですか? –

答えて

3

なぜですが、それは問題の原因でした。これらの行を削除すると、私が持っていた問題が修正されました。

61

あなたがしたい場所のすべてのPHPファイルの先頭にセッションを開始することを確認してください必要がありますスーパーグローバルの$_SESSIONを使用してください。このように:

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

セッションHELPERを忘れました。

チェックこのリンク:beforeFindafterFind

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

私にはわからない事をめちゃくちゃにされたのAppModelにおけるいくつかの余分なコードがあったが、book.cakephp.org/2.0/en/core-libraries/helpers/session.html

+0

私は 'Configure :: write( 'Session.start'、true);を私のcore.phpファイルで呼び出しています。ケーキはそこから世話してはいけないのですか? –

+1

あなたはsession_start()を試みました。最初の行に – Ghostman

+0

私の更新された答えのリンクを確認してください – Ghostman