Han*_*nes 26 php zend-framework zend-auth zend-session
我正在使用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)阵列
小智 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
小智 12
解决方案是将php.ini文件中的session.save_path设置为可写目录.例如:session.save_path ="/ tmp".在第一个示例中关闭会话垃圾回收不是一个好主意.第二个例子不适用于Ubuntu 10.04
小智 11
实际上,更改session.save_path的目录会关闭垃圾回收.这就是它现在适合你的原因.如果你想要垃圾收集你可以将原始目录所有者更改为php用户"www-data"
chown www-data/var/lib/php5
在替代方案中,您可以为新目录编写垃圾收集脚本.
小智 5
我也遇到了Symfony框架的这个问题,问题是php没有会话存储目录的权限.只需将会话保存目录更改为可写的位置即可.在Zend Framework Bootstrap config ini中:
resources.session.save_path = APPLICATION_PATH "/../data/session"
Run Code Online (Sandbox Code Playgroud)