Сеанс неожиданного исключения уже запущен автоматическим запуском сессии или session_start () - PullRequest
1 голос
/ 08 декабря 2010

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

Совершенно потерян с этой ошибкой.

Могу ли я, по крайней мере, получить помощь о том, где я долженпосмотрите, чтобы увидеть, что может быть не так?

В Zend, где мы устанавливаем временный каталог для хранения переменных сеанса?

Спасибо,MEM

Ответы [ 7 ]

4 голосов
/ 08 декабря 2010

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

в application.ini:

resources.session.save_path = APPLICATION_PATH "/../tmp/session"

Это исправило исключение для меня. Я надеюсь, что это работает и для вас!

2 голосов
/ 08 декабря 2010

Во-первых, убедитесь, что php не запускается автоматически.

php.ini (or ini_set in your index.php):
session.auto_start = 0

Во-вторых, не используйте session_start () или Zend_Session :: start () до того, как это потребуется.И если вы используете их, вы можете использовать их только один раз, или вы получите ошибку уже запущенного сеанса.

В-третьих, попробуйте использовать Zend_Session_Namespace только тогда, когда вам это нужно, и даже не использовать команды запуска вообщевыше.(в основном в контроллерах)

В-четвертых, вы можете настроить ресурс сеанса, используя ваше application.ini

  resources.session.save_path = APPLICATION_PATH "/../data/session"
  resources.session.use_only_cookies = true
  resources.session.remember_me_seconds = 864000

Подробнее о ресурсе: http://framework.zend.com/manual/en/learning.multiuser.sessions.html

Надеюсь, это поможет:)

1 голос
/ 05 февраля 2014

Похоже, это связано с задачей очистки сеанса, которую Zend пытается выполнить. По умолчанию apache имеет доступ только на запись в каталог сеанса (в Ubuntu это будет / var / lib / php5). Это приводит к сбою очистки, что приводит к периодическим ошибкам HTTP / 500.

Самый простой - предоставить доступ на чтение к apache, выполнив любой из

  1. chmod a+r /var/lib/php5
  2. chgrp www-data /var/lib/php5; chmod g+r /var/lib/php5

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

0 голосов
/ 28 сентября 2013

Сделай то, что сказал Арон, добавь:

resources.session.save_path = APPLICATION_PATH "/../temp/session"

к приложению ini. Убедитесь, что у вас есть папка. Работал на меня!

Я также добавил:

phpSettings.session.auto_start = 0

к приложению ini. Не уверен, что это помогло.

0 голосов
/ 18 января 2012

Вы на компьютере Debian / Ubuntu?

Если это так, ваша проблема может быть связана с автоматической сборкой мусора сессий. Попробуйте отключить его, установив его в файле php.ini:

session.gc_probability = 0

Подробнее см. http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage.

0 голосов
/ 27 мая 2011

Если вы разрабатываете приложения с библиотекой RPCL ( RADPHP ), и вы получаете эту ошибку:

Приложение вызвало класс исключения Zend_Session_Exception с сообщением «сессия уже запущена сессией .auto-start или session_start ()»,

тогда вот мое решение.

Вы будете удивлены, насколько это просто. Просто включите строку

require_once ( "zcommon.inc.php");

сразу после открытия тега PHP в файле, содержащем компонент ZAuth - обычно это файл с формой DataModule . Конечно, убедитесь, что файл zcommon.inc.php находится на вашем пути. Это гарантирует, что сеанс Zend начнется первым вместо сеанса RPCL.

Также сделайте так, чтобы имена файлов php в вашем приложении соответствовали именам содержащихся классов.

0 голосов
/ 08 декабря 2010

Эта ошибка возникает, когда session_start() был вызван до Zend_Session::start() или когда включен флаг конфигурации PHP session_auto_start. Убедитесь, что флаг отключен, и ваш код (или любые библиотеки, которые вы используете, кроме ZF) не вызывает session_start().

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