我有一个从头开始用 PHP 编写的应用程序。我正在使用 PHP 的本机会话处理程序函数来处理用户身份验证和持久性。
在开发服务器上进行测试时,一切都很顺利。身份验证、持久性等工作正常。
当安装在生产服务器上时,一切正常,直到用户身份验证——当应用程序实际将数据写入会话对象时,突然之后的 HTTP 请求完全在 session_start() 执行时完全挂起。
我怀疑临时会话文件被 PHP 锁定并且从未被释放,所以我尝试跟踪应用程序使用 写入会话对象的位置session_write_close(),但这似乎没有任何影响。
这听起来像是文件锁定问题还是其他问题?我很困惑为什么 session_write_close 似乎没有处理文件锁定问题,如果是这样的话,这就是为什么我想知道这里是否还有其他东西在起作用。
任何可能的想法或想法?
回复 Pekka 的好建议:
Linux wynn 2.6.18-164.9.1.el5PAE #1 SMP只是一些想法 - 除了pygorex的评论首先打开error_reporting,这绝对应该排在第一位。
可能不是,但是在 session_start 的用户贡献注释中描述了三个挂断:
您能否读取会话 cookie 并检查 /tmp 目录中是否存在该名称的会话文件?那个文件可以写吗?它包含数据吗?
如果所有其他方法都失败了,session_save_handler() 上的手册页看起来像是对默认会话处理函数的完全自定义替换。考虑使用这些进行详细调试。