Я получаю эту ошибку при попытке загрузить приложение Платформы Зенда:
Фатальная ошибка: Неперехваченное исключение '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
Это то, что написано. Zend_Auth
пытается начать новый сеанс, поскольку Zend_Session :: start ()
еще не был вызван.
Проблема в том, что Zend_Session :: start ()
должен быть вызван до начала сеанса. Но, поскольку session.autostart равен 0 (кстати, он находится в php.ini , а не в .htaccess ), вы, вероятно, где-то написали session_start ();
. Вам не разрешено это делать, поскольку ZF желает иметь полный контроль над сеансами, т.е. вам не следует напрямую обращаться к глобальной переменной сеанса.
Чтобы решить эту проблему, найдите в файлах кода session_start ()
и либо
error_reporting (E_ALL | E_STRICT);
Zend_Session :: start ();
во всех местах Если вы не можете найти все вхождения, найдите один session_start (); это беспокоит ваш Zend_Auth :: getInstance () -> hasIdentity ()
и быстро решает проблему с помощью следующего фрагмента
try {
Zend_Session::start();
} catch(Zend_Session_Exception $e) {
session_start();
}
. Если вы используете ZF во всем своем приложении, я бы пошел с 2)
У меня была такая же проблема, и, просматривая все сообщения, включая это, я не мог найти ответ, пока не обнаружил, что, хотя у меня был тот же результат исключения, моя ошибка была вызвана чем-то совершенно другим.
На самом деле у меня была проблема с автозагрузкой. Из-за этой проблемы во время Bootstrap, я полагаю, и было показано вышеуказанное исключение (скрывающее настоящую ошибку).
Итак, если вы прошли через все другие возможные исправления, попробуйте закомментировать детали в Bootstrap и посмотрите, поможет ли вам это решить эту проблему. Очевидно, что вы постепенно возвращаете различные части бутстрапа обратно, чтобы обнаружить настоящую проблему.