我的PHPCMS突然現(xiàn)出無(wú)法登錄、注冊(cè)的問(wèn)題,經(jīng)常不懈的努力終于解決,現(xiàn)在分享給大家,有需要的朋友可以參考.
環(huán)境:
操作系統(tǒng):Linux
服務(wù)器軟件:nginx/1.1.16PHP/5.3.27
MySQL 版本:5.5.34-log
PHPCMS程序版本:Phpcms V9.5.7 Release 20140625
問(wèn)題:
本地:本地調(diào)試一切正常
服務(wù)器上:PHPCMS中PHPSSO通信成功,無(wú)法進(jìn)行賬號(hào)注冊(cè)、登錄,通過(guò)跟蹤代碼發(fā)現(xiàn)下面代碼中返回的的$fp為空值.
$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
fsockopen函數(shù)替換為pfsockopen函數(shù)返回值仍為空,經(jīng)過(guò)搜索,發(fā)現(xiàn)原來(lái)是因?yàn)閒sockopen函數(shù)和pfsockopen函數(shù)存在安全問(wèn)題,已被服務(wù)器禁用.
安全通知公告網(wǎng)址:http://www.xrnet.cn/store/2012-01-10.html
解決辦法:
用其他函數(shù)代替fsockopen、pfsockopen函數(shù),比如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通信失敗也有可能是因此原因.
新聞熱點(diǎn)
疑難解答
圖片精選