一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 不支持fsockopen但支持curl環境下下ucenter與modoer通訊問題

不支持fsockopen但支持curl環境下下ucenter與modoer通訊問題

2019-12-10 13:34PHP技術網 PHP教程

網站上線,modoer與ucenter 下不能通訊折騰了我差不多二天,開始都以為自己的配置出問題,移植了平臺后就不能通訊了,修改了幾次配置,都沒有成功

所以就懷疑是否編碼問題,或者文件權限問題,或者是不是函數不支持問題,經過排查發現原來是萬網的L1主機不支持fsockopen,在文件uc_client/client.php中的uc_fopen中出現了問題,這里的代碼是這樣: 

復制代碼代碼如下:


function uc_fopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) { 
$return = ''; 
$matches = parse_url($url); 
!isset($matches['host']) && $matches['host'] = ''; 
!isset($matches['path']) && $matches['path'] = ''; 
!isset($matches['query']) && $matches['query'] = ''; 
!isset($matches['port']) && $matches['port'] = ''; 
$host = $matches['host']; 
$path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/'; 
$port = !empty($matches['port']) ? $matches['port'] : 80; 
if($post) { 
$out = "POST $path HTTP/1.0\r\n"; 
$out .= "Accept: */*\r\n"; 
//$out .= "Referer: $boardurl\r\n"; 
$out .= "Accept-Language: zh-cn\r\n"; 
$out .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"; 
$out .= "Host: $host\r\n"; 
$out .= 'Content-Length: '.strlen($post)."\r\n"; 
$out .= "Connection: Close\r\n"; 
$out .= "Cache-Control: no-cache\r\n"; 
$out .= "Cookie: $cookie\r\n\r\n"; 
$out .= $post; 
} else { 
$out = "GET $path HTTP/1.0\r\n"; 
$out .= "Accept: */*\r\n"; 
//$out .= "Referer: $boardurl\r\n"; 
$out .= "Accept-Language: zh-cn\r\n"; 
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"; 
$out .= "Host: $host\r\n"; 
$out .= "Connection: Close\r\n"; 
$out .= "Cookie: $cookie\r\n\r\n"; 

$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout); 
if(!$fp) { 
return '';//note $errstr : $errno \r\n 
} 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 == "\r\n" || $header == "\n")) { 
break; 


$stop = false; 
while(!feof($fp) && !$stop) { 
$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit)); 
$return .= $data; 
if($limit) { 
$limit -= strlen($data); 
$stop = $limit <= 0; 



@fclose($fp); 
return $return; 


fsockopen函數不能使用,因些就只能靠其它方法了,幸虧支持curl,file_get_contents也支持,經考慮就用curl吧,修改了uc_fopen函數,如下; 

復制代碼代碼如下:


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); 
curl_setopt($curl, CURLOPT_HEADER, 0); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$return = curl_exec($curl); 
if (curl_errno($curl)) { 
echo '<pre><b>錯誤:</b><br />'.curl_error($curl); 

curl_close($curl); 
return $return; 


于是modoer下的uc_client/client.php和uchome下的uc_cilent/client.php,就這樣修改了uc_open函數,呵呵,第一次使用curl,網上的資料還是好多的,所以也沒有什么阻礙,不過就不知這個修改會不會影響其它的東西,還有待測試羅。。。。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美在线一级片 | 欧美人禽杂交av片 | 亚洲 欧美 中文字幕 在线 | 日韩高清一区二区 | 成人网中文字幕色 | 非洲黑人xxxxxbbbbb | 亚洲香蕉综合在人在线视看 | 欧美18一videos极品 | 国产精品高清视亚洲一区二区 | 日韩中文字幕视频在线观看 | 欧美日韩第二页 | 欧美╳bbbb | 人与动人物aaaa | 韩国最新理论三级在线观看 | 天堂一区二区在线观看 | re99热| 亚洲精品在线免费 | 日本精工厂网址 | 亚洲 欧美 国产 综合 在线 | 我要看靠逼片 | avtt天堂在线| 欧美日韩人成在线观看 | 午夜久久久久久亚洲国产精品 | 把美女屁股眼扒开图片 | www一区 | 婚前试爱免费观看 | 色综合合久久天天综合绕视看 | 美女脱了内裤打开腿让人桶网站o | 天堂在线观看中文字幕 | 国产亚洲欧美成人久久片 | 牛牛色婷婷在线视频播放 | 狠狠色综合久久久久尤物 | 啪啪艹 | 精品国产一级毛片大全 | 黑人又大又硬又粗再深一点 | 99r视频 | bban女同系列022在线观看 | 国产盗摄wc厕所撒尿视频 | 手机在线伦理片 | 精品午夜久久网成年网 | 国产综合欧美日韩视频一区 |