PHP升级之后网站管理后台无法登录

在CentOS部署了一个php站点来申请ICP经营许可证。

蛋疼的问题来了,对php一窍不通,站点部署上去之后根本跑不起来,页面一片空白。

自己写了个phpinfo()的php页面放上去,运行正常。

把/etc/php.ini、/etc/php-fpm.conf、/etc/php-fpm.d/www.conf这些配置中的日志全开了,在日志文件中毛的报错都看不到。

后来在php页面开始处加入:

ini_set('display_errors',1);            //错误信息
ini_set('display_startup_errors',1);    //php启动错误信息
error_reporting(-1);                    //打印出所有的 错误信息
ini_set('error_log', dirname(__FILE__) . '/error_log.txt'); //将出错信息输出到一个文本文件

终于有报错了,一些函数找不到。

安装了一堆php-gd等等之类的扩展,站点总算可以运行了。

将站点提交给中介,是的,ZF就是这样腐bai无能,不干正事,这些审核机制没有半点实际意义,只是为难了办企业的,企业经营者根本无法理解哪些恶心人的审核要求,只能找中介帮忙。要说起来,这些所谓的审核唯一的意义就是养活了一帮中介。

对于站点,要审核些啥呢?

机房在哪里?

机房有没有做避雷?

数据有没有异地备份?

数据库用户名改了没有,权限设了没有,日志记录没有?

服务器root用户重命名了没有,禁止登录了没有,端口改了没有?

程序的执行权限怎么配置的?

防火墙呢,DDOS防护呢?

子网呢?

入网许可呢、域名备案呢、域名证书呢?

服务器什么版本、nginx什么版本、mysql什么版本?

站点的用户密码什么复杂度、长度多少、有没有单点登录、密码错误多少次锁定?

。。。。。。

总之,政府表现得像个保姆一样,实际上就是为了撇清一切责任,恶心做事的人。

吐槽完毕。

站点提上去后,审核又说什么php版本太低、页面表单有CSRF漏洞。

error_reporting(E_ALL ^ E_NOTICE);
$refererUrl = parse_url($_SERVER['HTTP_REFERER']);
$host = $refererUrl['host'];
if('www.xxx.cn' != $host){
exit("ERROR");
}

每个页面都验证一下referer,看你还漏不漏。

接着就是升级php。

升级后,站点用户使用正常,但管理员登录不了了。

Fuc!!! 老子对php一窍不通啊。

看了一下登录页面的php,发现问题在于客户端发送的token和服务端session的token不一致。

session的token为空时,会给session设置token;

客户端取得该token后,以后都要和session对比token,一致才合法。

在登录页面加了几个echo做调试,毛都没有打印,估计是登录的时候不管是否登录成功都有页面刷新或跳转,所以echo被覆盖了。

只好用写文件日志的方式来调试:

file_put_contents("/home/log.txt", "session:".$_SESSION['pytoken'].PHP_EOL, FILE_APPEND);

调试发现,session的token总是为空,所以session一直被重新设定,而客户端post的token是session上次被设置的token,所以一直对不上。所以问题就是,服务端无法保存session的token,所以session的token一直在变化,和客户端无法匹配。估计是权限问题。

在/etc/php.ini中,有这么一行配置:

session.save_path = "home/data/php/tmp"

把tmp文件夹授权给了php的运行用户,发现没有毛用。

在/etc/php-fpm.d/www.conf中,也有这么一行:

php_value[session.save_path]  = /var/lib/php/session
把session文件也授权给php的运行用户之后,终于正常了。

猜你喜欢

转载自blog.csdn.net/Dancen/article/details/81779874
今日推荐