Ошибка сеанса Cakephp на живом сайте - PullRequest
0 голосов
/ 06 марта 2012

У меня проблемы с использованием компонента сеанса в cakephp. Они отлично работали по всему сайту, когда находились на сайте разработчика на другом сервере.

После загрузки окончательной версии на новый сервер кажется, что сеанс не будет запущен на определенных контроллерах. Это происходит только на двух контроллерах, но на этих контроллерах, кажется, ничего не происходит по-другому, за исключением, возможно, того факта, что только эти два контроллера используют пользовательский компонент загрузки файлов. Попробовал отключить это и ничего не изменилось.

Сайт представляет собой систему электронной коммерции, проблемы которой возникают, в основном, при попытке добавить товар в корзину, которая сохраняется в сеансе. этот сеанс остается пустым, тогда как на сайте разработчика работал шарм.

Я также использую компонент auth для входа / выхода из системы, и хотя для работы этих двух областей не требуется вход в систему, они заставляют его переключаться в режим выхода из системы всякий раз, когда они загружаются, и затем он сам переключается обратно. когда любой другой раздел сайта доступен. Компоненты auth и session загружаются в контроллер приложений.

Спасибо!

Ответы [ 2 ]

1 голос
/ 11 апреля 2012

У меня была похожая проблема до сих пор, и у меня было такое же впечатление, как у @starlocke, что что-то нужно, чтобы начать удар. Вместо использования компонента Sake в Cake я использовал команду session_start(), проверив, что $_SESSION не определено. Например:

if(!isset($_SESSION)) session_start();

Это было размещено внутри метода beforeFilter () класса AppController.

У меня также возникла проблема, когда он говорил, что не может запустить сеанс из-за того, что он уже выводится на сервер, это было решено для меня путем удаления любых закрывающих тегов ?> внутри контроллеров, так как они не ' t требуется php и остановите любой ненужный вывод, отправляемый в браузер, как в этом случае.

Дополнительная информация о тегах закрытия php:

0 голосов
/ 08 марта 2012

Мой личный опыт показал, что сессии CakePHP не зависят от сессий Apache + PHP. Имея это в виду, это помогает предпринять некоторые действия, чтобы всегда гарантировать, что сеанс CakePHP (вместо обычного сеанса Apache + PHP) создается в начале рабочего процесса вашего сайта, например, добавляя что-то вроде $this->Session->read('foo'); в * 1002 вашего сайта. * AppController beforeFilter(). Не имеет значения, какой ключ вы пытаетесь прочитать, и «foo» должно быть достаточно для начала ваших сессий CakePHP.

...