【发布时间】:2012-12-24 06:31:30
【问题描述】:
我有一个从头开始用 PHP 编写的应用程序。我正在使用 PHP 的本机会话处理函数来处理用户身份验证和持久性。
在开发服务器上进行测试时,一切都很顺利。身份验证、持久性等工作正常。
当安装在生产服务器上时,一切正常,直到用户身份验证 - 当应用程序实际将数据写入会话对象时,突然间,紧随其后的 HTTP 请求在 session_start() 执行时完全挂起。
我怀疑临时会话文件被 PHP 锁定并且从未释放,因此我尝试使用 session_write_close() 跟踪应用程序写入会话对象的位置,但这似乎没有任何效果。
这听起来像是文件锁定问题还是其他问题?如果是这种情况,我对为什么 session_write_close 似乎没有处理文件锁定问题感到困惑,这就是为什么我想知道这里是否还有其他东西在起作用。
任何可能的想法或想法?
回复 Pekka 的好建议:
- 生产服务器是linux环境。 phpinfo 报告
Linux wynn 2.6.18-164.9.1.el5PAE #1 SMP - 页面没有调用自己
- 我可以读/写会话文件夹和文件。我可以看到从身份验证尝试中序列化到文件中的身份验证数据。
【问题讨论】:
-
这听起来像是配置问题。确保 PHP 报告所有错误,即
error_reporting(E_ALL)并显示或记录所有错误。 (您甚至可能希望在您的 php.ini 中启用display_startup_errors) - 报告所有错误可能会阐明正在发生的事情。 -
是的,好主意 - 这将是我的下一步 - 不幸的是,我的“生产”环境是一个共享主机,我几乎无法控制,但我会联系技术支持看看他们能不能帮我解决这个问题。
-
@andy 您是否接受了我的回答来清理您的列表,或者确实有什么办法?有兴趣知道。
-
@andy 刚刚看到你的评论,干杯。