Zend_Session/Zend_Auth随机抛出错误消息ps_files\u cleanup\u dir:opendir(/var/lib/php5)失败:权限被拒绝(13)
我目前正在使用Zend_Auth(除其他外)开发一个新的应用程序,但无论出于何种原因,此错误消息都会随机出现在任何位置(至少是这样)Zend_Session/Zend_Auth随机抛出错误消息ps_files\u cleanup\u dir:opendir(/var/lib/php5)失败:权限被拒绝(13),php,zend-framework,zend-auth,zend-session,Php,Zend Framework,Zend Auth,Zend Session,我目前正在使用Zend_Auth(除其他外)开发一个新的应用程序,但无论出于何种原因,此错误消息都会随机出现在任何位置(至少是这样) Zend_Session::start()-/home/hannes/workspace/develop/library/Zend/Session.php(第480行):错误#8Session_start()[function.Session start]:ps_files_cleanup_dir:opendir(/var/lib/php5)失败:权限被拒绝(13
Zend_Session::start()
-/home/hannes/workspace/develop/library/Zend/Session.php(第480行):错误#8Session_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/develope/library/Zend/Auth/Storage/Session.php(87):Zend_Session_Namespace->_构造('Zend_Auth'))
- #2/home/hannes/workspace/develope/library/Zend/Auth.php(91):Zend\u Auth\u Storage\u Session->\u construct()
- #3/home/hannes/workspace/develope/library/Zend/Auth.php(141):Zend_Auth->getStorage()
- #4/home/hannes/workspace/develope/xxxxxxx/application/controllers/AdminController.php(10):Zend_Auth->hasintity()
- #5/home/hannes/workspace/develope/library/Zend/Controller/Action.php(133):AdminController->init()
- #6/home/hannes/workspace/develope/library/Zend/Controller/Dispatcher/Standard.php(262):Zend_Controller_Action->_构造(对象(Zend_Controller_Request_Http)、对象(Zend_Controller_Response_Http)、数组)
- #7/home/hannes/workspace/develope/library/Zend/Controller/Front.php(954):Zend\u Controller\u Dispatcher\u Standard->dispatch(对象(Zend\u Controller\u Request\u Http)、对象(Zend\u Controller\u Response\u 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/develope/xxxxxxx/public/index.php(26):Zend_应用程序->运行()
- #11{main}
在中,我对Symfony框架也有这个问题,问题是php没有会话存储目录的权限。只需将会话保存目录更改为可写的位置。在Zend Framework引导配置ini中:
resources.session.save_path = APPLICATION_PATH "/../data/session"
解决方案是将php.ini文件中的session.save_路径设置为可写目录。 例如:session.save_path=“/tmp”。
在第一个示例中关闭会话垃圾收集不是一个好主意。第二个示例在Ubuntu 10.04上不起作用,实际上更改会话的目录。save_路径会关闭垃圾收集。这就是为什么它现在对你有效。如果需要垃圾收集,可以将原始目录所有者更改为php用户“www data” chown www.data/var/lib/php5
或者,您可以为新目录编写一个垃圾收集脚本。我在OSX 10.8.4和MAMP上遇到了这个问题,使用了第一个Zend框架。在
php.ini
中为会话.save_path
设置的目录默认为/Applications/MAMP/tmp/php
。我只能通过删除该目录中的所有内容来解决此问题。如果您在Ubuntu上使用PHP7,请确保PHP会话目录归web服务器所有:
sudo chown www-data:www-data /var/lib/php/sessions
已经试过了,让我从20次中的1次失败变为20次中的20次失败:(+1:回答得很好!如果链接将来不起作用,这里有一个解决方案:变量
session.gc_probability
在php.ini
中设置为1
,这意味着垃圾收集器运行并清理存储php会话的目录/var/lib/php5
。App显然,这个文件夹不能被www-data
写入,导致上述错误并引发Zend异常。将session.gc\u probability
设置为0
解决了这个问题。会话文件夹无论如何都是由cron作业清理的,因此php垃圾收集器甚至不需要运行。得到了错误,但我有ssession.gc_probability=0
已经这样了,所以这对我来说没有解决任何问题。抱歉,只是出现在这里。这是一个糟糕的解决方案。为什么?因为除了root之外,没有人可以进入这个目录。我想在运行php的Web服务器上,会话目录是最易受攻击的目录之一。假设您有一个可利用的Web应用程序,它可以提供当您读取/tmp的访问权限时,攻击者只能通过获取文件名来劫持当前处于活动状态的任何会话。天知道会话本身存在哪些易受攻击的数据。总而言之,将会话置于/tmp下是一个非常糟糕的主意。故事结束!:)@汉内斯和所有其他人…请检查你是否找到相关性!嗯,谢谢…我从未真正解决过这个问题,但另一方面,那是7年前的事了:D