سؤال

انا احصل 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 أو 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
هل كانت مفيدة؟

المحلول 2

تبين أن هناك بعض التعليمات البرمجية الإضافية في AppModel التي كانت تفسد الأمور:

في beforeFind و afterFind:

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

لا أعرف لماذا, ، ولكن هذا هو ما كانت المشكلة.أدت إزالة هذه الخطوط إلى حل المشكلة التي كنت أواجهها.

نصائح أخرى

يجب عليك التأكد من بدء الجلسة في الجزء العلوي من كل ملف PHP حيث تريد استخدام ملف $_SESSION superglobal.مثله:

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

لقد نسيت مساعد الجلسة.

تحقق من هذا الرابط: book.cakephp.org/2.0/en/core-libraries/helpers/session.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top