我想要的时候无法重现这个异常。它只是偶尔发生一次,同时测试网站导航。它可能发生在任何页面,没有用户登录或不登录,没有 物质
完全失败了这个错误。
我是否至少可以帮助我了解哪些内容可以查看可能出现的问题?
在Zend中我们在哪里设置临时目录来存储会话变量?
谢谢,
MEM
答案 0 :(得分:4)
我最近在Dreamhost上遇到了这个问题。我把它煮到会话路径是不可写的。我通过电子邮件发送了Dreamhost支持,他们没有响应,因此我需要更改文件系统中保存会话的路径。
app.ini中的:
resources.session.save_path = APPLICATION_PATH "/../tmp/session"
这为我解决了例外。我希望它对你也有用!
答案 1 :(得分:2)
首先,确保php不会自动启动。
php.ini (or ini_set in your index.php):
session.auto_start = 0
其次,在必要之前不要使用session_start()或Zend_Session :: start()。如果你确实使用它们,你只能使用它们一次,否则你会得到一个已经启动的会话错误。
第三,尝试仅在需要时使用Zend_Session_Namespace,甚至不使用上面的start命令。 (主要是在控制者中)
第四,您可以使用application.ini
配置会话资源 resources.session.save_path = APPLICATION_PATH "/../data/session"
resources.session.use_only_cookies = true
resources.session.remember_me_seconds = 864000
有关资源的更多信息: http://framework.zend.com/manual/en/learning.multiuser.sessions.html
希望这有助于:)
答案 2 :(得分:1)
这似乎与Zend尝试执行的会话清理任务有关。默认情况下,apache只对会话目录具有写访问权限(在Ubuntu框中,它将是/ var / lib / php5)。这会导致清理失败,从而导致间歇性的HTTP / 500错误。
最简单的方法是通过执行
之一来提供对apache的读访问权限chmod a+r /var/lib/php5
chgrp www-data /var/lib/php5; chmod g+r /var/lib/php5
以上命令假设您正在运行Ubuntu。在其他发行版中,调整用户名/路径。
答案 3 :(得分:0)
在session_start()
之前调用Zend_Session::start()
或启用PHP配置标志session_auto_start时,会发生此错误。确保禁用该标志,并且您的代码(或您使用的任何库,除了ZF)未调用session_start()
。
答案 4 :(得分:0)
如果您正在使用 RPCL 库( RADPHP )开发应用程序,并且您收到此错误:
应用程序引发了一个异常类Zend_Session_Exception,消息'session已经由session.auto-start或session_start()'启动,
然后这是我的解决方案。
你会惊讶它有多简单。简单包括行
require_once( “zcommon.inc.php”);
在包含 ZAuth 组件的文件中打开PHP标记之后 - 通常这是具有 DataModule 形式的文件。当然要确保文件 zcommon.inc.php 在您的路径中。这将确保Zend会话首先启动而不是RPCL会话。
还要使应用程序中php文件的名称与包含类的名称相对应。
答案 5 :(得分:0)
您使用的是Debian / Ubuntu机器吗?
如果是这样,您的问题可能与会话的自动垃圾收集有关。 尝试通过在php.ini文件中设置它来禁用它:
session.gc_probability = 0
有关详细信息,请参阅http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage。
答案 6 :(得分:0)
做Aron所说的补充:
resources.session.save_path = APPLICATION_PATH "/../temp/session"
申请ini。确保你有这个文件夹。为我工作!
我还补充说:
phpSettings.session.auto_start = 0
申请ini。不确定这是否有帮助。