ucenter home은 fsockopen을 지원하지 않지만 culr 환경에서 ucenter와 modoer 간의 통신 문제는 지원합니다.

WBOY
풀어 주다: 2016-07-29 08:46:31
원래의
839명이 탐색했습니다.

그래서 인코딩 문제인지, 파일 권한 문제인지, 지원하지 않는 기능인지 의심해 보았는데, 조사해보니 Wanwang의 L1 호스트가 fsockopen을 지원하지 않고, uc_client/client.php 파일의 uc_fopen에 문제가 있는 것으로 나타났습니다. . 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.


function uc_fopen($url, $ 제한 = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) {
$return = ''; $matches = pars_url($ url);
!isset($matches['host']) && $matches['host'] = ''; $matches['path' ] = '';
!isset($matches['query']) && $matches['query'] = ''; ) && $matches[' port'] = ''; $host = $matches['host']
$path = $matches['path'].( $matches['query'] ? '?'.$matches['query'] : '') :
$port = !empty($matches['port']) ? port'] :
if($post) {
$out = "POST $path HTTP/1.0rn"
$out .= "수락: */*rn"; //$out .= "참조자: $boardurlrn";
$out .= "수락 언어: zh-cnrn"
$out .= "콘텐츠 유형: application/x-www-form- urlencodedrn";
$out .= "사용자 에이전트: $_SERVER[HTTP_USER_AGENT]rn";
$out .= "호스트: $hostrn";
$out .= '콘텐츠 길이: ' .strlen($post) ."rn";
$out .= "연결: Closern";
$out .= "캐시 제어: no-cachern"
$out .= "쿠키 : $cookiernrn";
$out .= $post;
} else {
$out = "GET $path HTTP/1.0rn";
$out .= "수락: */* rn";
//$out .= "참조자: $boardurlrn";
$out .= "수락 언어: zh-cnrn";
$out .= "사용자 에이전트: $_SERVER [HTTP_USER_AGENT]rn";
$out .= "호스트: $hostrn";
$out .= "연결: Closern";
$out .= "쿠키: $cookiernrn";
}
$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout)
if(!$fp) {
return '' ;//note $errstr : $errno rn
} else {
stream_set_blocking($fp, $block)
stream_set_timeout($fp, $timeout)
@fwrite($fp, $ out);
$status = stream_get_meta_data($fp);
if(!$status['timed_out']) {
while (!feof($fp)) {
if(($ header = @fgets($ fp)) && ($header == "rn" || $header == "n")) {
break
}
}
$stop = false ;
while( !feof($fp) && !$stop) {
$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));
$return .
if($limit) {
$limit -= strlen($data)
$stop = $limit <= 0; 🎜>}
}
@fclose($fp);
return $return;
}
}


fsockopen 함수를 사용할 수 없으므로 다행히도 컬은 지원되고, file_get_contents도 지원하기로 하여, 컬을 사용하기로 결정하고 다음과 같이 uc_fopen 함수를 수정했습니다. code

코드는 다음과 같습니다:


function uc_fopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) {

$return = '';
$curl = curl_init()
curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']) ; if($post) { curl_setopt($curl, CURLOPT_POST, 1) curl_setopt($curl, CURLOPT_POSTFIELDS , $post); }

if($cookie) {

curl_setopt($curl, CURLOPT_COOKIE, $cookie)
}
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); <…
echo '

오류:
'.curl_error($curl)
}
curl_close($curl); return $return
}


그래서 modoer의 uc_client/client.php와 uchome의 uc_cilent/client.php는 uc_open 함수를 이런 식으로 수정했습니다. 하하. 컬을 사용하세요. 아직 인터넷에 정보가 많아서 장애물은 없지만, 수정이 다른 것에 영향을 미칠지는 아직 테스트가 남아있습니다. . . .
위 내용은 ucenter home의 내용을 포함하여 fsockopen을 지원하지 않지만 culr 환경을 지원하는 ucenter home에서 ucenter와 modoer 간의 통신 문제를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿