“сессия была уже запущена …” исключение в приложении Платформы Зенда

Я получаю эту ошибку при попытке загрузить приложение Платформы Зенда:

Фатальная ошибка: Неперехваченное исключение 'Zend_Session_Exception' с сообщением 'сессия было уже запущено session.auto-запуском или session_start ()' в/www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session.php:462

Отслеживание стека:

0./www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session/Namespace.php (143): Zend_Session:: запустите (верный)

1./www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Auth/Storage/Session.php (87): Zend_Session_Namespace-> __ конструкция ('Zend_Auth')

2./www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Auth.php (91): Zend_Auth_Storage_Session-> __ конструкция ()

3./www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Auth.php (141): Zend_Auth-> getStorage ()

4./www/htdocs/w00a1ed7/autospin/redaktion/application/layouts/scripts/layout.phtml (31): Zend_Auth-> hasIdentity ()

5./www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/View.php (108): включайте ('/www/htdocs/w00... ')

6./www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/View/Abstract.php (831): Zend_View-> _ выполненный ('/www/htdocs/w00... ')

7./www/htdocs/w00a1ed в/www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session.php на строке 462

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

Я проверил это session.autostart установлен на 0 в .htaccess файл.

Как я фиксирую эту ошибку?


Спасибо за Ваш Ответ, но я не делаю пользователя session_start () нигде. Работа только с ZF.

У меня Есть эта проблема только на общем сервере на моих работах сценария локального сервера отлично.

Я Использование Функция INIT с этим кодом:

защищенный $user;

public function init()
{   
    if(!Zend_Auth::getInstance()->hasIdentity())
    {
        $this->_redirect('auth/login');
    }else
    {
        $this->user = Zend_Auth::getInstance()->getIdentity();
    }
}

Я уже пытаюсь установить это, кодируют только в indexAction, так, чтобы другие действия не разгрызали Автора..., но все еще иметь проблемы.

Ist там способ установить в Действии, чтобы не сделать проверки о сессии или чем-то как это?

Отношения Beste

11
задан Bill the Lizard 2 November 2011 в 21:41
поделиться

2 ответа

Это то, что написано. Zend_Auth пытается начать новый сеанс, поскольку Zend_Session :: start () еще не был вызван.

Проблема в том, что Zend_Session :: start () должен быть вызван до начала сеанса. Но, поскольку session.autostart равен 0 (кстати, он находится в php.ini , а не в .htaccess ), вы, вероятно, где-то написали session_start (); . Вам не разрешено это делать, поскольку ZF желает иметь полный контроль над сеансами, т.е. вам не следует напрямую обращаться к глобальной переменной сеанса.

Чтобы решить эту проблему, найдите в файлах кода session_start () и либо

  1. удалите все вхождения, кроме одного. Чтобы заметить, запущен ли он уже, установите error_reporting (E_ALL | E_STRICT);
  2. замените его на Zend_Session :: start (); во всех местах

Если вы не можете найти все вхождения, найдите один session_start (); это беспокоит ваш Zend_Auth :: getInstance () -> hasIdentity () и быстро решает проблему с помощью следующего фрагмента

try {
    Zend_Session::start();
} catch(Zend_Session_Exception $e) {
    session_start();
}

. Если вы используете ZF во всем своем приложении, я бы пошел с 2)

15
ответ дан 3 December 2019 в 00:51
поделиться

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

На самом деле у меня была проблема с автозагрузкой. Из-за этой проблемы во время Bootstrap, я полагаю, и было показано вышеуказанное исключение (скрывающее настоящую ошибку).

Итак, если вы прошли через все другие возможные исправления, попробуйте закомментировать детали в Bootstrap и посмотрите, поможет ли вам это решить эту проблему. Очевидно, что вы постепенно возвращаете различные части бутстрапа обратно, чтобы обнаружить настоящую проблему.

0
ответ дан 3 December 2019 в 00:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: