cakephp Session-> проблема записи в Linux - PullRequest
0 голосов
/ 14 июля 2009

У меня проблема с методом Session-> write для CakePHP.

Если я установлю значение, подобное $ _SESSION ['..'], я смогу прочитать его обратно. Но если я использую метод записи, он не работает.

Моя проблема такая же, как здесь: http://www.nabble.com/Session-problem-td16684956.html

Тот же код работал в Windows, но он не работает после перехода на Linux.

Причиной может быть проблема с разрешением? (но я дал разрешение rw полностью для каталога приложения для торта).

пример кода: в ссылке: http://www.nabble.com/Session-problem-td16684956.html

  • Configure :: write ('Session.save', 'php');
  • Configure :: write ('Session.cookie', 'CAKEPHP');
  • Configure :: write ('Session.start', true);
  • Configure :: write ('Session.checkAgent', false);
  • Configure :: write ('Security.level', 'medium');

версия торта: 1.2.3.8166

Ответы [ 3 ]

2 голосов
/ 14 июля 2009

Несколько шагов, чтобы убедиться, что это не вы:

  • очистить кеш в вашем / app / tmp
  • проверьте и перепроверьте, что ваш / app / tmp рекурсивно доступен для записи во всем мире (это означает, что drwxrwxrwx для всех папок внутри)
  • используйте Firebug , чтобы проверить сессионный cookie, возможно, что-то с ним не так

И последнее, но не менее важное: попробуйте перенести постоянство сеанса в свою базу данных (см .: Session.save ), просто чтобы проверить это таким образом, вы никогда не знаете, что найду.

Надеюсь, вы найдете что-нибудь, если попробуете все это.

0 голосов
/ 24 октября 2012

Вам также следует попробовать использовать Cache :: read и Cache :: write

if (($session = Cache::read('session')) === false) 
{
   $session = 'some values';
   Cache::write('session', $session);
} 

Во-первых, он попытается инициализировать Cache :: read. Если он возвращает false, Cache :: write примет участие для хранения значений в сессиях.

0 голосов
/ 14 июля 2009

Prabu,

Хотя я подозреваю, что вызов Configure :: write () иногда корректно устанавливает информацию о сеансе (по крайней мере, выглядит так, как он может работать), соглашение Cake (также известное как CakeWay) - использовать помощник Session. Я считаю, что он включен по умолчанию во все контроллеры Cake; если нет, вы всегда можете объявить свой контроллер так:

class UsersController extends AppController {
 ...
 var $helpers = array( 'Session', ... )
 ...
}

Затем, когда вы хотите записать информацию в сеанс, просто позвоните:

$this->Session->write( 'checkAgent', false );

Для считывания значений используйте:

$this->Session->read( 'checkAgent');

Для получения дополнительной информации о помощнике Session, посетите CakeBook @ http://book.cakephp.org/view/484/Session

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...