Подтвердить что ты не робот

Zend_Session/Zend_Auth случайно генерирует сообщение об ошибке ps_files_cleanup_dir: opendir (/var/lib/php5) не удалось: разрешение отклонено (13)

В настоящее время я работаю над новым Приложением, использующим (помимо прочего) 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) failed: Permission denied (13) Array

  • # 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_Controller_Response_Http), массив)
  • # 7/home/hannes/workspace/develop/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard- > dispatch (Object (Zend_Controller_Request_Http), Object (Zend_Controller_Response_Http))
  • # 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}
4b9b3361

Ответ 1

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

Ответ 2

По-видимому, эта проблема затрагивает в основном (только?) системы debian/ubuntu и связана с автоматической сборкой мусора сеанса.

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

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

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

Ответ 3

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

chown www-data/var/lib/php5

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

sudo chown www-data:www-data /var/lib/php/sessions