Я получаю эту ошибку при попытке загрузить приложение Zend Framework:
Неустранимая ошибка: исключение исключения «Zend_Session_Exception» с сеансом сообщения уже начато session.auto-start или session_start () 'в /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session.php:462
- Как проверить либо Zend_Form_Element_File, либо Zend_Form_Element_Text не пустые.
- require_once отсутствует структура доктрины zend
- Проблема при отправке почты с Zend Mail?
- Как отлаживать файл PHP, который вызывается AJAX?
- Генерация отчетов в PHP (требуется формат pdf, xls, doc, csv)
Трассировки стека:
# 0 /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session/Namespace.php(143): Zend_Session :: start (true)
# 1 /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Auth/Storage/Session.php(87): Zend_Session_Namespace -> __ construct ('Zend_Auth')
# 2 /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Auth.php(91): Zend_Auth_Storage_Session -> __ construct ()
# 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): include ('/ www / htdocs / w00 …')
# 6 /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/View/Abstract.php(831): Zend_View -> _ run ('/ www / htdocs / w00 …')
# 7 / www / htdocs / w00a1ed в /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session.php в строке 462
Я использую Zend_Auth
и на своем локальном сервере, и он работает хорошо, но на 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(); } }
в системуpublic function init() { if(!Zend_Auth::getInstance()->hasIdentity()) { $this->_redirect('auth/login'); }else { $this->user = Zend_Auth::getInstance()->getIdentity(); } }
Я уже постарался установить tis-код только в indexAction, так что другим действиям не нужно пытаться использовать Auth … но все еще есть проблемы.
У меня есть способ установить в Action, чтобы не проверять сеанс или что-то вроде этого?
С наилучшими пожеланиями
Это то, что он говорит. 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()
и решает проблему быстро n 'грязно со следующим фрагментом
try { Zend_Session::start(); } catch(Zend_Session_Exception $e) { session_start(); }
Если вы используете ZF в своем приложении, я бы пошел с 2)
Прежде чем это сведёт вас с ума, в вашем коде, наверное, нет ничего плохого!
Проверьте свой application.ini для пути сохранения сеанса, для меня это APPLICATION_PATH '/ session'
Теперь проверьте, есть ли у вас правильные разрешения! Если нет, то cd в папку приложения и введите
сеанс sudo chmod 777 sudo chown -R [usernamehere] сеанс sudo chgrp -R [usernamehere] сеанс
Работа выполнена!
У меня была такая же ошибка. На локальной машине все работало нормально. На сервере нет. Моим решением было установить Zend_Session::start();
в index.php перед запуском бутстрапа. Чтобы это выглядело так:
<?php // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); /** Zend_Application */ require_once 'Zend/Application.php'; // Create application, bootstrap, and run $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); error_reporting(E_ALL); ini_set("display_errors", 1); Zend_Session::start(); $application->bootstrap()->run();
Существуют три основные причины, которые порождают эту проблему:
В большинстве случаев причиной является второй вариант.
Если вы разрабатываете приложения с библиотекой RPCL ( RADPHP ), и вы получаете эту ошибку:
Приложение подняло класс исключения Zend_Session_Exception с сообщением «сеанс уже запущен session.auto-start или session_start ()»,
то вот мое решение.
Вы будете удивлены, насколько это просто. Простые включают строку
require_once ( "zcommon.inc.php");
сразу после открытия PHP-тега в файле, содержащем компонент ZAuth – обычно это файл с формой DataModule . Конечно, убедитесь, что файл zcommon.inc.php находится на вашем пути. Это обеспечит запуск первого сеанса Zend вместо сеанса RPCL.
Также убедитесь, что имя php-файлов в вашем приложении соответствует имени содержащихся классов.
Я хотел бы обратить ваше внимание на проблему сбора мусора, решенную здесь Проблемы с PHP 5.3 и папками сеансов или http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu- session-phpini-мусор .
После того, как «сеанс уже запущен», я обнаружил ошибку GC. Я подозреваю, что ошибка GC может быть основной причиной ошибки сессии, по крайней мере, в некоторых случаях. До сих пор у меня не было достаточно времени для тщательного изучения, но, пожалуйста, прокомментируйте, если GC и ошибка сессии связаны и в вашем случае.
имела ту же ошибку. это происходило только в том случае, если одновременно использовались два экземпляра одной и той же сессии (например, одновременно загружались два экземпляра браузера). Это связано с тем, что php не может одновременно обрабатывать два открытых сеанса с одним и тем же идентификатором.
Для тех, кто перемещается с одного сервера на другой. Другой проблемой может быть пользователь, с которым работает apache. Я запускал другого пользователя в моей старой коробке, которая была установлена на новом. Я использовал конфиги из моего старого httpd.conf и забыл обновить разрешения на / var / lib / php / session, чтобы отобразить другого пользователя.
Чтобы проверить, я изменил perms на 777. Все работало нормально, ошибка исчезла:
# cd /var/lib/php # chmod 0777 session
Таким образом, я вернул perms и изменил группу. Конечно, измените newApacheUser на учетную запись пользователя, на которой запущен httpd, на IF NOT apache.
# chmod 0770 session # chown root:newApacheUser session
Что-то проверить, если у вас все еще есть эта проблема:
Неустранимая ошибка: исключение исключений «Zend_Session_Exception» с сообщением «сеанс» уже запущен session.auto-start или session_start ()
В случае, если это используется, я очистил эту ошибку, вытащив связанные сессии строки из моего приложения / config / application.ini
;resources.session.save_path = APPLICATION_PATH "/../data/session" ;resources.session.use_only_cookies = true ;resources.session.remember_me_seconds = 3600
Благодаря chelmertz для понимания причины проблемы.
Для этой проблемы существует проблема:
# 25 "уже запущен session.auto-start или session_start ()" сообщение об ошибке вводит в заблуждение
У меня была та же проблема и поиск по всем сообщениям, включая этот, я не мог найти ответ, пока не выпустил, хотя, хотя у меня был тот же результат исключения, моя ошибка была вызвана чем-то совершенно другим.
У меня действительно была проблема с автозагрузкой. Из-за проблемы во время Bootstrap я считаю, что это привело к тому, что приведенное выше исключение было показано (скрытие реальной ошибки).
Поэтому, если вы воспользовались всеми другими возможными исправлениями, попробуйте комментировать детали в своем Bootstrap и посмотрите, не пройдет ли эта проблема. Очевидно, вы медленно возвращаете разные части бутстрапа, чтобы выявить настоящую проблему.