Zend framework 会话自动启动或会话_start()已启动意外异常会话

Zend framework 会话自动启动或会话_start()已启动意外异常会话,zend-framework,exception,Zend Framework,Exception,我无法在需要时复制此异常。它只是偶尔发生一次,在测试站点导航时。它可能发生在任何页面上,用户是否登录都不需要 重要 完全被这个错误迷住了 至少,我能不能帮个忙,看看哪里有问题 在Zend中,我们在哪里设置存储会话变量的临时目录 谢谢, MEM在Zend\u session::start()之前调用了session\u start()或启用了PHP配置标志session\u auto\u start()时,会发生此错误。确保该标志已禁用,并且您的代码(或除ZF外使用的任何库)未调用session\

我无法在需要时复制此异常。它只是偶尔发生一次,在测试站点导航时。它可能发生在任何页面上,用户是否登录都不需要 重要

完全被这个错误迷住了

至少,我能不能帮个忙,看看哪里有问题

在Zend中,我们在哪里设置存储会话变量的临时目录

谢谢,

MEM

Zend\u session::start()
之前调用了
session\u start()
或启用了PHP配置标志session\u auto\u start()时,会发生此错误。确保该标志已禁用,并且您的代码(或除ZF外使用的任何库)未调用
session\u start()

如果在
Zend\u session::start()
之前调用了
session\u start()
,或者启用了PHP配置标志session\u auto\u start(),则会发生此错误。确保该标志已禁用,并且您的代码(或除ZF外使用的任何库)未调用
session\u start()

首先,确保php未自动启动

php.ini (or ini_set in your index.php):
session.auto_start = 0
其次,在必须使用session\u start()或Zend\u session::start()之前,不要使用它们。如果您确实使用了它们,您只能使用它们一次,否则您将得到一个会话已启动错误

第三,尝试只在需要时使用Zend_Session_名称空间,而不使用上面的start命令。(主要在控制器中)

第四,您可以使用application.ini配置会话资源

  resources.session.save_path = APPLICATION_PATH "/../data/session"
  resources.session.use_only_cookies = true
  resources.session.remember_me_seconds = 864000
有关资源的更多信息:


希望这有帮助:)

首先,确保php没有自动启动

php.ini (or ini_set in your index.php):
session.auto_start = 0
其次,在必须使用session\u start()或Zend\u session::start()之前,不要使用它们。如果您确实使用了它们,您只能使用它们一次,否则您将得到一个会话已启动错误

第三,尝试只在需要时使用Zend_Session_名称空间,而不使用上面的start命令。(主要在控制器中)

第四,您可以使用application.ini配置会话资源

  resources.session.save_path = APPLICATION_PATH "/../data/session"
  resources.session.use_only_cookies = true
  resources.session.remember_me_seconds = 864000
有关资源的更多信息:


希望这能有所帮助:)

我最近在Dreamhost上遇到了这个问题。我把它归结为会话路径不可写。我给Dreamhost支持发送了电子邮件,但他们没有响应,因此我需要更改文件系统中保存会话的路径

在application.ini中:

resources.session.save_path = APPLICATION_PATH "/../tmp/session"

这为我修正了一个例外。我希望它对你也有用

我最近在Dreamhost上遇到了这个问题。我把它归结为会话路径不可写。我给Dreamhost支持发送了电子邮件,但他们没有响应,因此我需要更改文件系统中保存会话的路径

在application.ini中:

resources.session.save_path = APPLICATION_PATH "/../tmp/session"

这为我修正了一个例外。我希望它对你也有用

如果您正在使用RPCL库(RADPHP)开发应用程序,并且出现以下错误:

应用程序引发了一个异常类Zend_Session_exception,消息为“Session.auto-start或Session_start()”已启动Session

这就是我的解决方案

你会惊讶于它是多么简单。简单的包括线

需要一次(“zcommon.inc.php”)

在包含ZAuth组件的文件中打开PHP标记之后–通常这是带有DataModule表单的文件。当然,请确保文件zcommon.inc.php位于您的路径中。这将确保首先启动Zend会话,而不是RPCL会话


还应使应用程序中php文件的名称与包含类的名称相对应。

如果您使用RPCL库(RADPHP)开发应用程序,并且出现以下错误:

应用程序引发了一个异常类Zend_Session_exception,消息为“Session.auto-start或Session_start()”已启动Session

这就是我的解决方案

你会惊讶于它是多么简单。简单的包括线

需要一次(“zcommon.inc.php”)

在包含ZAuth组件的文件中打开PHP标记之后–通常这是带有DataModule表单的文件。当然,请确保文件zcommon.inc.php位于您的路径中。这将确保首先启动Zend会话,而不是RPCL会话


还要使应用程序中php文件的名称与包含类的名称相对应。

您是否在Debian/Ubuntu机器上

如果是这样,您的问题可能与会话的自动垃圾收集有关。 通过在php.ini文件中设置此选项,尝试禁用它:

session.gc_probability = 0

有关更多信息,请参阅。

您是否使用Debian/Ubuntu机器

如果是这样,您的问题可能与会话的自动垃圾收集有关。 通过在php.ini文件中设置此选项,尝试禁用它:

session.gc_probability = 0
有关更多信息,请参阅。

按照Aron所说的操作添加:

resources.session.save_path = APPLICATION_PATH "/../temp/session"
到应用程序ini。确保你有这个文件夹。为我工作

我还补充说:

phpSettings.session.auto_start = 0
到应用程序ini。不确定这是否有帮助。

按照Aron说的做,添加:

resources.session.save_path = APPLICATION_PATH "/../temp/session"
到应用程序ini。确保你有这个文件夹。为我工作

我还补充说:

phpSettings.session.auto_start = 0

到应用程序ini。不确定这是否有帮助。

这似乎与Zend试图执行的会话清理任务有关。默认情况下,apache只有对会话目录的写访问权限(在Ubuntu框中是/var/lib/php5)。这会导致清理失败,导致间歇性HTTP/500错误

最简单的方法是通过执行以下操作之一授予apache读访问权限

  • chmoda+r/var/lib/php5
  • chgrp www-data/var/lib/php5;chmod g+r/var/lib/php5
  • 以上命令假设您正在运行Ubuntu。在其他发行版中,调整用户名/路径。

    这似乎是错误的