我的PHPCMS突然现出无法登录、注册的问题,经常不懈的努力终于解决,现在分享给大家,有需要的朋友可以参考.
环境:
操作系统:Linux
服务器软件:nginx/1.1.16PHP/5.3.27
MySQL 版本:5.5.34-log
PHPCMS程序版本:Phpcms V9.5.7 Release 20140625
问题:
本地:本地调试一切正常
服务器上:PHPCMS中PHPSSO通信成功,无法进行账号注册、登录,通过跟踪代码发现下面代码中返回的的$fp为空值.
$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
fsockopen函数替换为pfsockopen函数返回值仍为空,经过搜索,发现原来是因为fsockopen函数和pfsockopen函数存在安全问题,已被服务器禁用.
安全通知公告网址:http://www.xrnet.cn/store/2012-01-10.html
解决办法:
用其他函数代替fsockopen、pfsockopen函数,比如stream_socket_client,示例如下.
- //修改前:
- $fp = fsockopen($host, 80, $errno, $errstr, 30);
- //或
- $fp = fsockopen($host, $port, $errno, $errstr, $connection_timeout);
- //开源软件:Vevb.com
- //修改后:
- $fp = stream_socket_client("tcp://".$host."80", $errno, $errstr, 30);
- //或
- $fp = stream_socket_client("tcp://".$host.":".$port, $errno, $errstr, $connection_timeout);
注释:DISCUZ通信失败也有可能是因此原因.
新闻热点
疑难解答