2

我正在使用 Zend Framework 版本 1.11.11 编写 php。有时我收到错误

session has already been started by session.auto-start or session_start()

页面刷新后,此错误消失。我读了几篇关于这个问题的帖子。我检查了配置并将 session.auto_start 设置为关闭。我不直接调用 session_start(),因为我只使用 Zend_Session 组件来处理会话。

这个问题的原因可能是什么?可以连接垃圾收集器吗?

4

2 回答 2

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。在其他发行版中,调整用户名/路径。

于 2014-02-05T12:04:23.090 回答
0

我猜这是在debian服务器上?如果不是,这可能不是解决方案……但我们在基于 Ubuntu 的安装中遇到了这个问题。

发生这种情况是因为已安装的 PHP 包和正在运行以处理会话清理的 cron 脚本的组合。(无论出于何种原因......不知道他们为什么这样做......)

我们通过执行以下操作取得了成功: - 删除 cron 作业以清除 PHP 会话内容(相信我,它在那里 - 很烦人) - chmod www-data:www-data /var/lib/php5 (或等效信息) - session.gc_probability = 1 在你的 php.ini 文件中

可能不是最好的解决方案,但它为我解决了这个问题。

于 2013-07-25T01:47:38.620 回答