新聞中心
微企業(yè)微信程序后臺(tái)生成自定義菜單時(shí)報(bào)500服務(wù)器錯(cuò)誤之解決辦法
昨天無(wú)憂主機(jī)淘寶店鋪上賣出去了一個(gè)香港獨(dú)立IP虛擬空間,因?yàn)榭蛻羰亲銎髽I(yè)微信公眾號(hào)的,今天無(wú)憂主機(jī)小編一上旺旺就彈出求救信號(hào),剛一連上客戶說(shuō):我在你們空間安裝的這個(gè)程序,后臺(tái)生成菜單時(shí)出現(xiàn)500錯(cuò)誤哦!二貨不說(shuō),讓用戶提供一下空間信息,小編就開(kāi)始去測(cè)試程序,分析出了解決辦法。 錯(cuò)誤再現(xiàn):這是一款微企業(yè)微信程序,500提示如下: 登陸微企后臺(tái),選中你要操作的公眾號(hào),功能管理,選擇3G站>>微信導(dǎo)航菜單管理>>生成自定義菜單,就會(huì)提示500。 [caption id="attachment_14441" align="alignnone" width="550"] 截圖[/caption] 無(wú)憂主機(jī)小編在測(cè)試的時(shí)候發(fā)現(xiàn),這段生成自定義菜單的文件代碼,只適合windows系統(tǒng)里面,而并非在無(wú)憂主機(jī)特色系統(tǒng)空間的Linux系統(tǒng)里面,是無(wú)法執(zhí)行的,才會(huì)提示500. 為此,最終解決方法如下: 小編我重寫了該文件的三個(gè)方法,這里站長(zhǎng)們?cè)僖膊挥脫?dān)心微信程序無(wú)法再無(wú)憂主機(jī)上執(zhí)行啦! 修改文件:../weiqiye/Lib/Action/User/DiymenAction.class.php 用FTP工具把文件DiymenAction.class.php下載到本地,然后用高級(jí)記事本編輯,替換三個(gè)重寫方法,重寫之后的方法如下: function api_notice_increment($url, $data) { return $this->HttpRequest($url,$data); } function curlGet($url) { return $this->HttpRequest($url); } function HttpRequest($url,$data = false) { $udp = parse_url($url); if($udp['scheme'] == 'https' || $udp['scheme'] == 'HTTPS') $ssl = true; else $ssl = false; $host = $ssl ? 'ssl://'.$udp['host'] : $udp['host']; $fp = fsockopen($host,($ssl ? 443 : 80) ,$errno,$errstr,60); if(!$fp) return false; stream_set_timeout($fp,60); $type = $data ? 'POST' : 'GET'; $out = $type.' '.$udp['path'].( isset($udp['query']) ? '?'.$udp['query'] : '' )." HTTP/1.0 \r\n"; $out .= 'Host: '.$udp['host']." \r\n"; $out .= "Content-type: application/x-www-form-urlencoded \r\n"; if($type == 'POST') { $out .= "Content-length: ".strlen($data)." \r\n"; } $out .= "Connection: Close\r\n"; $out .= "Accept: */* \r\n\r\n"; if($type == 'POST') { $out .= $data; } if(!fputs($fp,$out)) return false; $ls = ''; $start_time = time(); while(!feof($fp)) { $l = fread($fp,1024); $status = stream_get_meta_data($fp); if($status['timed_out']) { return false; } if(time() - $start_time >= 60) { return false; } $ls.= $l; } if(empty($ls)) return false; $ls = explode("\r\n\r\n",$ls,2); $status = explode("\r\n",$ls[0]); $status = explode(" ",$status[0]); if($status[1] != 200) return false; return $ls[1]; } 找到這個(gè)方法后,替換即可。如果還在無(wú)憂主機(jī)購(gòu)買了空間遇到網(wǎng)站程序上的其他問(wèn)題,不要擔(dān)心,無(wú)憂主機(jī)技術(shù)部是您強(qiáng)大的后盾。
本文地址:http://www.gle-technology.com/others/14440.html