我目前正在使用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 :(得分: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_path
中php.ini
的目录设置为/Applications/MAMP/tmp/php
。我只能通过删除该目录中的所有内容来解决它。