我正在使用Zend_Auth(除其他外)使用Zend_Auth进行新的应用程序,但无论出于何种原因,此错误消息在任何位置完全随机出现(或者它接缝)
Zend_Session::start()
- /home/hannes/workspace/develop/library/Zend/Session.php(Line: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/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}
小智.. 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
显然这个问题主要影响(仅限?)基于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
解决方案是将php.ini文件中的session.save_path设置为可写目录.例如:session.save_path ="/ tmp".在第一个示例中关闭会话垃圾回收不是一个好主意.第二个例子不适用于Ubuntu 10.04
实际上,更改session.save_path的目录会关闭垃圾回收.这就是它现在适合你的原因.如果你想要垃圾收集你可以将原始目录所有者更改为php用户"www-data"
chown www-data/var/lib/php5
在替代方案中,您可以为新目录编写垃圾收集脚本.
我也遇到了Symfony框架的这个问题,问题是php没有会话存储目录的权限.只需将会话保存目录更改为可写的位置即可.在Zend Framework Bootstrap config ini中:
resources.session.save_path = APPLICATION_PATH "/../data/session"