Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话系统崩溃_Php_Linux_Apache_Session_Redhat - Fatal编程技术网

PHP会话系统崩溃

PHP会话系统崩溃,php,linux,apache,session,redhat,Php,Linux,Apache,Session,Redhat,我创建了一个相对较小的基于php/mysql的网站,并将其托管在运行Red Hat 6.4、Apache/2.2.15的服务器上。为了访问该站点,需要用户进行身份验证 现在出现了一个奇怪的问题。当我启动服务器时,站点最初运行正常,但大约12-24小时后,php会话停止工作。当用户尝试登录时,他们的凭据将从数据库中成功检索,登录脚本将设置会话变量,但当他们重定向到主页时,会话变量将丢失,因此主页认为他们没有登录,并将他们重定向回登录页。该网站使用率不高,大约有50名注册用户,每天的登录人数不到10

我创建了一个相对较小的基于php/mysql的网站,并将其托管在运行Red Hat 6.4、Apache/2.2.15的服务器上。为了访问该站点,需要用户进行身份验证

现在出现了一个奇怪的问题。当我启动服务器时,站点最初运行正常,但大约12-24小时后,php会话停止工作。当用户尝试登录时,他们的凭据将从数据库中成功检索,登录脚本将设置会话变量,但当他们重定向到主页时,会话变量将丢失,因此主页认为他们没有登录,并将他们重定向回登录页。该网站使用率不高,大约有50名注册用户,每天的登录人数不到100人。此外,该站点需要一个邀请代码才能注册,因此机器人进入该站点的可能性非常小

以下是用于启动会话、登录用户以及检查用户是否经过身份验证的PHP函数(代码的灵感来源于):

为了验证我的假设,即问题与会话有关,我创建了以下php页面,并在正常运行时间检查器上每5分钟对其进行一次监控:

<?php
require_once("include/authentication.php");
SecSessionStart();
$_SESSION['sessionCheck'] = "The cookie was successfully saved and retrieved";
session_write_close();

$_SESSION['sessionCheck']="";

SecSessionStart();
if (isset($_SESSION['sessionCheck']))
{
echo($_SESSION['sessionCheck']);
}
session_destroy();
session_write_close();
?>

正如我所怀疑的,页面在大约20个小时内返回了正确的答案,然后我得到一个警告,页面没有显示成功字符串。我收到警报后,网站上的登录部分也不起作用。我曾尝试重新启动httpd进程以恢复会话,但这没有帮助。只有在服务器完全重启后,一切才恢复正常

我试着在某某和其他网站上搜索我的问题,我发现了一些有点关联的问题,但它们并不完全适合我的情况。我的问题与其他类似问题的主要区别在于,该站点一开始运行得非常好,但一段时间后,会话总是失败。其他的海报也有问题,他们有时会失去会议,或者会议根本不起作用

任何关于这个问题可能来源的提示都将不胜感激。如果您需要我提供任何有帮助的进一步信息,请告诉我


谢谢

您的会话存储在哪里?在/etc/php5/apache2/php.ini中,
session.save_handler
session.save_path
的值是什么?save_handler=文件;save_path=/var/lib/php/session我已经检查了这个路径,它有6204个文件,最早的是1月14日的文件。应该有这么多文件吗?应该没问题。也许只要看看这个目录,当问题再次出现时,检查一下设备上还有多少空间之类的东西。24小时后问题再次消失的事实可能指向某种清理机制,可能是logrotate,它释放了一些空间。
<?php
require_once("include/authentication.php");
SecSessionStart();
$_SESSION['sessionCheck'] = "The cookie was successfully saved and retrieved";
session_write_close();

$_SESSION['sessionCheck']="";

SecSessionStart();
if (isset($_SESSION['sessionCheck']))
{
echo($_SESSION['sessionCheck']);
}
session_destroy();
session_write_close();
?>