概述
在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的运行用户之后,终于正常了。
最后
以上就是爱撒娇小蘑菇为你收集整理的PHP升级之后网站管理后台无法登录的全部内容,希望文章能够帮你解决PHP升级之后网站管理后台无法登录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复