空間安裝了discuz X2.5,安裝時提示fsockopen和pfsockopen函數被禁用,沒有理會繼續安裝,安裝過程沒出現錯誤但是進入后臺Ucenter卻發現通信失敗,跟蹤了一下代碼發現問題出現在uc_server/model/misc.php的95-101行代碼如下:
- if(function_exists('fsockopen')) {
- $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
- } elseif (function_exists('pfsockopen')) {
- $fp = @pfsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
- } else {
- $fp = false;
- }
因為空間禁用了fsockopen和pfsockopen函數所以$fp成了false了,好在還有stream_socket_client函數可用,將代碼修改為:
- if(function_exists('fsockopen')) {
- $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
- } elseif (function_exists('pfsockopen')) {
- $fp = @pfsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
- }elseif(function_exists('stream_socket_client')) {
- $hostname = $ip ? $ip : $host;
- $fp = @stream_socket_client($hostname.':'.$port, $errno, $errstr, $timeout);
- } else {
- $fp = false;
- }
重新訪問應用管理,通信一切正常,但此時還不能同步登錄登出,還需要修改所有應用下的uc_client目錄中的client.php,應該是在212行,修改的代碼同上,修改完測試登錄登出實現同步.
新聞熱點
疑難解答