我正在使用Zend Framework 1.11.11版本在php中编写。 有时 我收到错误
session has already been started by session.auto-start or session_start()
页面刷新后此错误消失。我读了几篇关于这个问题的帖子。我检查了配置,session.auto_start设置为Off。我不直接调用session_start(),因为使用会话我只使用Zend_Session组件。
这个问题的原因是什么?可以与垃圾收集器连接吗?
答案 0 :(得分:1)
这似乎与Zend尝试执行的会话清理任务有关。默认情况下,apache只对会话目录具有写访问权限(在Ubuntu框中,它将是/ var / lib / php5)。这会导致清理失败,从而导致间歇性的HTTP / 500错误。
最简单的方法是通过执行以下任一操作来为apache提供读取权限 1)chmod a + r / var / lib / php5 2)chgrp www-data / var / lib / php5; chmod g + r / var / lib / php5
以上命令假设您正在运行Ubuntu。在其他发行版中,调整用户名/路径。
答案 1 :(得分:0)
我猜这是在debian服务器上?如果没有,这可能不是解决方案......但我们在基于Ubuntu的安装上遇到了这个问题。
这种情况正在发生,因为已安装的PHP软件包与运行的cron脚本相结合,可以处理会话清理。 (无论出于何种原因......不确定为什么他们这样做......)
我们通过以下方面取得了成功: - 删除cron作业以清除PHP会话的东西(相信我,它在那里 - 它很烦人) - chmod www-data:www-data / var / lib / php5(或等效信息) - php.ini文件中的session.gc_probability = 1
可能不是最好的解决方案,但它会照顾我。