500-phpcurl_exec()方法报500错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了500-phpcurl_exec()方法报500错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4076字,纯文字阅读大概需要6分钟。
内容图文
![500-phpcurl_exec()方法报500错误](/upload/InfoBanner/zyjiaocheng/192/2d8764fc605a4f79badc0c8beb89c8da.jpg)
1、只显示500错误,不显示任何详细的错误信息。
2、该主机只能看到访问日志,无法看到错误日志,也无法看到和修改php.ini设置和apache设置等。
3、利用@、try catch也无法使这个错误跳过,并且curl的资源参数也是正确的(我每个参数都打印过)
综上所述,我仍未找到方法定位这个错误,希望大神指导指导。
$ch = curl_init();
//设置超时
curl_setopt($ch, CURLOPT_TIMEOUT, $second);
//如果有配置代理这里就设置代理
if(WxPayConfig::getValue('curl_proxy_host') != "0.0.0.0"
&& WxPayConfig::getValue('curl_proxy_port') != 0){
curl_setopt($ch,CURLOPT_PROXY, WxPayConfig::getValue('curl_proxy_host'));
curl_setopt($ch,CURLOPT_PROXYPORT, WxPayConfig::getValue('curl_proxy_port'));
}
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
//设置header
curl_setopt($ch, CURLOPT_HEADER, FALSE);
//要求
结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if($useCert == true){
//设置证书
//使用证书:cert 与 key 分别属于两个.pem文件
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT, WxPayConfig::getValue('sslcert_path'));
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY, WxPayConfig::getValue('sslkey_path'));
}
//post提交方式
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
//运行curl
$data = curl_exec($ch);
//返回结果
if($data){
curl_close($ch);
return $data;
} else {
$error = curl_errno($ch);
curl_close($ch);
throw new WxPayException("curl出错,错误码:$error");
}
回复内容:
最近在用做商城的微信扫码支付功能时,在代码构建微信订单然后通过curl向微信请求的时候,curl_exec函数报500错误,且没有详细的错误信息给出。之前用阿里云服务器、我的本地测试时,均无问题,因为客户需要现在程序放在了阿里云的虚拟主机上,就出现这个问题了,并且我确认curl已开启可以用,错误显示display_errors和error_reporting也已经设置成显示所有错误。但:
1、只显示500错误,不显示任何详细的错误信息。
2、该主机只能看到访问日志,无法看到错误日志,也无法看到和修改php.ini设置和apache设置等。
3、利用@、try catch也无法使这个错误跳过,并且curl的资源参数也是正确的(我每个参数都打印过)
综上所述,我仍未找到方法定位这个错误,希望大神指导指导。
$ch = curl_init();
//设置超时
curl_setopt($ch, CURLOPT_TIMEOUT, $second);
//如果有配置代理这里就设置代理
if(WxPayConfig::getValue('curl_proxy_host') != "0.0.0.0"
&& WxPayConfig::getValue('curl_proxy_port') != 0){
curl_setopt($ch,CURLOPT_PROXY, WxPayConfig::getValue('curl_proxy_host'));
curl_setopt($ch,CURLOPT_PROXYPORT, WxPayConfig::getValue('curl_proxy_port'));
}
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
//设置header
curl_setopt($ch, CURLOPT_HEADER, FALSE);
//要求
结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if($useCert == true){
//设置证书
//使用证书:cert 与 key 分别属于两个.pem文件
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT, WxPayConfig::getValue('sslcert_path'));
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY, WxPayConfig::getValue('sslkey_path'));
}
//post提交方式
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
//运行curl
$data = curl_exec($ch);
//返回结果
if($data){
curl_close($ch);
return $data;
} else {
$error = curl_errno($ch);
curl_close($ch);
throw new WxPayException("curl出错,错误码:$error");
}
一般来说虚拟主机会让你看错误日志的,不过可能是最后的多少条。
我猜想可能是超出内存限制了吧,你提交工单问问。
何不贴代码?
在php文件最开始加入以下代码:
set_error_handler(function(){
echo '';
var_dump(func_get_args());
debug_print_backtrace();
},E_ERROR);
set_error_handler(function(\Exception $e){
echo '';
echo $e->getFile().PHP_EOL;
echo $e->getLine().PHP_EOL;
echo $e->getMessage().PHP_EOL;
echo $e->getTraceAsString().PHP_EOL;
});
内容总结
以上是互联网集市为您收集整理的500-phpcurl_exec()方法报500错误全部内容,希望文章能够帮你解决500-phpcurl_exec()方法报500错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。