新闻中心
微企业微信程序后台生成自定义菜单时报500服务器错误之解决办法
昨天无忧主机淘宝店铺上卖出去了一个香港独立IP虚拟空间,因为客户是做企业微信公众号的,今天无忧主机小编一上旺旺就弹出求救信号,刚一连上客户说:我在你们空间安装的这个程序,后台生成菜单时出现500错误哦!二货不说,让用户提供一下空间信息,小编就开始去测试程序,分析出了解决办法。
错误再现:这是一款微企业微信程序,500提示如下:
登陆微企后台,选中你要操作的公众号,功能管理,选择3G站>>微信导航菜单管理>>生成自定义菜单,就会提示500。
[caption id="attachment_14441" align="alignnone" width="550"] 截图[/caption]
无忧主机小编在测试的时候发现,这段生成自定义菜单的文件代码,只适合windows系统里面,而并非在无忧主机特色系统空间的Linux系统里面,是无法执行的,才会提示500.
为此,最终解决方法如下:
小编我重写了该文件的三个方法,这里站长们再也不用担心微信程序无法再无忧主机上执行啦!
修改文件:../weiqiye/Lib/Action/User/DiymenAction.class.php
用FTP工具把文件DiymenAction.class.php下载到本地,然后用高级记事本编辑,替换三个重写方法,重写之后的方法如下:
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];
}
找到这个方法后,替换即可。如果还在无忧主机购买了空间遇到网站程序上的其他问题,不要担心,无忧主机技术部是您强大的后盾。
本文地址:https://www.51php.com/others/14440.html






