Zend_Session / Zend_Auth случайным образом выдает сообщение об ошибке ps_files_cleanup_dir: сбой opendir (/ var / lib / php5): отказано в разрешении (13) - PullRequest
26 голосов
/ 28 мая 2010

В настоящее время я работаю над новым Приложением, использующим (среди прочего) Zend_Auth, но по какой-либо причине это сообщение об ошибке отображается в любом месте совершенно случайно (или так выглядит)

Zend_Session::start() - /home/hannes/workspace/develop/library/Zend/Session.php(Line:480): Ошибка № 8 session_start() [function.session-start]: ps_files_cleanup_dir: opendir (/ var / Ошибка lib / php5): в доступе отказано (13) Массив

  • # 0 /home/hannes/workspace/develop/library/Zend/Session/Namespace.php(143): Zend_Session :: start (true)
  • # 1 /home/hannes/workspace/develop/library/Zend/Auth/Storage/Session.php(87): Zend_Session_Namespace -> __ construct ('Zend_Auth')
  • # 2 /home/hannes/workspace/develop/library/Zend/Auth.php(91): Zend_Auth_Storage_Session -> __ construct ()
  • # 3 /home/hannes/workspace/develop/library/Zend/Auth.php(141): Zend_Auth-> getStorage ()
  • # 4 /home/hannes/workspace/develop/xxxxxxx/application/controllers/AdminController.php(10): Zend_Auth-> hasIdentity ()
  • # 5 /home/hannes/workspace/develop/library/Zend/Controller/Action.php(133): AdminController-> init ()
  • # 6 /home/hannes/workspace/develop/library/Zend/Controller/Dispatcher/Standard.php(262): Zend_Controller_Action -> __ construct (Object (Zend_Controller_Request_Http), Object (Zend_Cponse_Hontrol_R)
  • # 7 /home/hannes/workspace/develop/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard-> dispatch (Объект (Zend_Controller_Request_Http), Объект (Zend_Controller_ppon)
  • # 8 /home/hannes/workspace/develop/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front-> dispatch ()
  • # 9 /home/hannes/workspace/develop/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap-> run ()
  • # 10 /home/hannes/workspace/develop/xxxxxxx/public/index.php(26): Zend_Application-> run ()
  • # 11 {main}

Ответы [ 6 ]

16 голосов
/ 29 мая 2010

Очевидно, что эта проблема затрагивает в основном (только?) Системы на основе Debian / Ubuntu и связана с автоматической сборкой мусора сессии.

Переменная session.gc_probability была установлена ​​в 1 в php.ini, что означает, что для сборщика мусора есть вероятность 1% запустить и очистить каталог / var / lib / php5, гдеphp сессии хранятся.

Очевидно, что эта папка недоступна для записи по www-данным, что приводит к указанной ошибке и вызывает исключение Zend.Установка для session.gc_probability значения 0 решила проблему.В любом случае папка сеанса очищается заданием cron, поэтому нет необходимости даже запускать сборщик мусора php.

From http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage

12 голосов
/ 21 декабря 2010

Решение состоит в том, чтобы установить session.save_path в файле php.ini в доступный для записи каталог.например: session.save_path = "/ tmp".Отключение сборки мусора в первом примере не очень хорошая идея.Второй пример не работает на Ubuntu 10.04

11 голосов
/ 16 февраля 2011

Фактическое изменение каталога session.save_path отключает сборку мусора. Вот почему это сейчас работает для вас. Если вы хотите сборку мусора, вы можете изменить первоначального владельца каталога на пользователя php "www-data"

chown www-data / var / lib / php5

В качестве альтернативы вы можете написать скрипт сборки мусора для нового каталога.

5 голосов
/ 18 октября 2010

У меня также была эта проблема с платформой Symfony, проблема в том, что у php нет прав доступа к каталогу хранения сеанса. Просто измените каталог сохранения сеанса на где-то доступный для записи. В Zend Framework Bootstrap config ini:

resources.session.save_path = APPLICATION_PATH "/../data/session"
2 голосов
/ 06 июля 2017

Если вы используете PHP 7.0

sudo chown www-data:www-data /var/lib/php/sessions
1 голос
/ 03 июля 2013

У меня была эта проблема на OS X 10.8.4 с MAMP, используя первый Zend Framework. Каталог, установленный для session.save_path в php.ini по умолчанию /Applications/MAMP/tmp/php. Я смог решить это, только удалив все в этом каталоге.

...