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): Error #8 [function.session-start]: ps_files_cleanup_dir: opendir(/var/lib/php5) 失败: 权限被拒绝 (13) 数组session_start()

  • #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), Array)
  • #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 {主}

答案 1

显然,这个问题主要影响(仅?)基于debian/ubuntu的系统,并且与自动会话垃圾回收有关。

变量 session.gc_probability 在 php 中设置为 1.ini这意味着垃圾回收器有 1% 的概率运行并清理存储 php 会话的目录 /var/lib/php5。

显然,此文件夹无法由www-data写入,从而导致上述错误并引发Zend异常。将session.gc_probability设置为 0 解决了问题。无论如何,会话文件夹都会被cron作业清理,因此甚至不需要运行php垃圾回收器。

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


答案 2

解决方案是将 php.ini 文件中的session.save_path设置为可写目录。例如:session.save_path = “/tmp”。在第一个示例中关闭会话垃圾回收不是一个好主意。第二个示例不适用于 Ubuntu 10.04


推荐