Zend_Session / Zend_Auth随机抛出错误消息ps_files_cleanup_dir:opendir(/ var / lib / php5)失败:权限被拒绝(13)

时间:2010-05-28 16:46:15

标签: php zend-framework zend-auth zend-session

我目前正在使用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_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 {main}

6 个答案:

答案 0 :(得分:16)

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

  

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

     

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

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

答案 1 :(得分:12)

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

答案 2 :(得分:11)

实际上,更改session.save_path的目录会关闭垃圾回收。这就是它现在适合你的原因。如果您想要垃圾收集,您可以将原始目录所有者更改为php用户“www-data”

chown www-data / var / lib / php5

在替代方案中,您可以为新目录编写垃圾收集脚本。

答案 3 :(得分:5)

我也遇到了Symfony框架的这个问题,问题是php没有会话存储目录的权限。只需将会话保存目录更改为可写的位置即可。在Zend Framework Bootstrap config ini中:

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

答案 4 :(得分:2)

如果您使用的是PHP 7.0

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

答案 5 :(得分:1)

我使用第一个Zend Framework在OS X 10.8.4和MAMP上遇到了这个问题。默认情况下,session.save_pathphp.ini的目录设置为/Applications/MAMP/tmp/php。我只能通过删除该目录中的所有内容来解决它。

相关问题