gpt4 book ai didi

php - session_start 挂起

转载 作者:IT王子 更新时间:2023-10-29 01:21:58 26 4
gpt4 key购买 nike

在几个小时内,每次您执行 session_start 时,我们的服务器都会挂起。

出于测试目的,我创建了一个如下所示的脚本:

<?php
session_start();
?>

从控制台调用它会挂起,甚至不能用 ctrl-c 停止,只有 kill -9 有效。通过 Apache 调用它也是如此。 /var/lib/php/session/ 保持为空,但权限绝对没问题,www 可以写入并且对所有父文件夹都有读取权限。

根据管理员的说法,服务器上没有进行任何更改,也没有为 session 注册特殊代码。服务器是 CentOS 4 或 5,昨天一切正常。我们重启了服务器并更新了 PHP,但没有任何改变。

我的想法已经用完了,有什么建议吗?

更新

我们通过将项目移动到另一台服务器解决了这个问题,因此虽然问题仍然存在于一台服务器上,但不再需要立即解决。不过,如果有人对将来遇到类似问题的其他人有想法,我会保持开放状态。

最佳答案

造成这种情况的原因有很多,以下是其中的一些:

A. session 文件可以以独占方式打开。当文件锁由于某种原因没有正确释放时,它会导致 session_start() 在任何 future 的脚本执行中无限挂起。解决方法:使用 session_set_save_handler() 并确保写入函数使用 fopen($file, 'w') 而不是 fopen($file, 'x')

B. 切勿在您的 php.ini 文件中使用以下内容(熵文件到“/dev/random”),这将导致您的 session_start( ) 挂起:

<?php
ini_set("session.entropy_file", "/dev/random");
ini_set("session.entropy_length", "512");
?>

C.session_start() 需要一个要写入的目录。

您可以在普通用户帐户中运行 Apache 和 PHP。 Apache 当然必须监听 80 以外的其他端口(例如 8080)。

一定要做到以下几点:- 创建一个临时目录 PREFIX/tmp- 将 php.ini 放入 PREFIX/lib- 编辑 php.ini 并将 session.save_path 设置为您刚刚创建的目录

否则,您的脚本似乎会在 session_start() 上“挂起”。

关于php - session_start 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4333209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com