由验证码和session丢失的引发原因

时间:2022-07-30 00:40:39

今天中午,突然完整验证码全部不能显示了,查看gd库是没问题的,然后发现网站登录不上,追查变天,无果。

然后两个小时过后,可能是网站压力小了,网站又恢复正常。

但是过一阵又来。

其实很明显不是代码的问题,而是服务器环境问题。

查看内存,发现只剩下几十m,怪不得php不正常工作了。

然后用命令查看ps aux | grep -c php-fpm php进程数,发现有50+,每个占用0.2%,那就是10%。然而就是这样内存就爆了。

修改php-fpm的进程数 php-fpm.conf  max_child,得以缓解问题。

2015-07-15:但是问题继续,这次等了几个小时还是没有恢复,开始调试代码,结果发现的入口文件index.php文件有问题。有bom,就是前面有输出,所以header函数失效,session也失效。问题解决。但是php-fpm的问题还是继续。

2016-04-18补充

今天发现一个问题,访问不存在的图片,会导致session丢失,具体原因不知道,但是间接导致这个原因的是nginx的rewrite

if (!-e $request_filename) #支持thinkphp
{
rewrite ^/test/(.*)$ break;
rewrite ^/dianping/(.*)$ break;
rewrite ^/((?!backup/).*)$ /index.php?s=$ last;
break;
}

这是原来的配置,有缺陷,会把图片也解析

location ~ .*\.(htm|html)$ {
if (!-e $request_filename) #支持thinkphp
{
rewrite ^/test/(.*)$ break;
rewrite ^/dianping/(.*)$ break;
rewrite ^/((?!backup/).*)$ /index.php?s=$ last;
break;
}
}

加上

location ~ .*\.(htm|html)$ {},就不会全部解析到index.php了