cURL 调用不工作,没有可见错误(WampServer 3)
cURL call not working with no errors visible (WampServer 3)
我在 Riot 中使用 curl API。在我的实时服务器上一切正常,但不在本地。 WampServer 中启用了 curl 扩展,但我没有收到任何错误消息,它只是一个空白页面。
这是我的代码,即使它实际上并不相关。
<?php
$private_key = "XXX";
function summoner_name($summoner, $server, $private_key) {
$summoner_encoded = rawurlencode($summoner);
$summoner_lower = strtolower($summoner_encoded);
$curl_url = 'https://' . $server . '.api.pvp.net/api/lol/' . $server . '/v1.4/summoner/by-name/' . $summoner . '?api_key='.$private_key;
$curl = curl_init($curl_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
function summoner_info_array_name($summoner) {
$summoner_lower = mb_strtolower($summoner, 'UTF-8');
$summoner_nospaces = str_replace(' ', '', $summoner_lower);
return $summoner_nospaces;
}
$summoner = "Test";
$server = "euw";
$summoner_info = summoner_name($summoner, $server, $private_key);
$summoner_info_array = json_decode($summoner_info, true);
$summoner_info_array_name = summoner_info_array_name($summoner);
$summoner_id = $summoner_info_array[$summoner_info_array_name]['id'];
$summoner_name_display = $summoner_info_array[$summoner_info_array_name]['name'];
$summoner_icon = $summoner_info_array[$summoner_info_array_name]['profileIconId'];
echo '<img src="http://ddragon.leagueoflegends.com/cdn/6.9.1/img/profileicon/'.$summoner_icon.'.png" /><br/><hr>'.$summoner_name_display;
?>
这是我的 phpinfo()
卷曲扩展。
提前致谢!
。
您可以随时调用 curl_getinfo() and curl_error() 函数来检查最新 curl 查询的问题。
像这样:
$result = curl_exec($curl);
if ($result === false) {
echo "Something is wrong here!\n".var_export(curl_error($curl), true)
. "\nQuery:".var_export(curl_getinfo($curl), true); exit();
}
所以,首先,@MaksimVolkob pointed out, and as we discussed in the comments, the first step to resolving these errors is to see what the error message actually is. curl_error()
会给你这个信息。
具体来说,您收到 SSL/TLS 错误:
SSL certificate problem: unable to get local issuer certificate' (length=63)
如果您不关心安全性(我永远不建议将此用于生产应用程序。),您可以禁用失败的 SSL 验证步骤:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
更好的方法是通过设置 CURLOPT_CAINFO
来修复您的 CA 证书信息。 This blog post 很好地解释了这一点。
编辑:正如 OP 发现的那样, 有更多关于让 cURL 识别正确的 CA 证书的细节。
我在 Riot 中使用 curl API。在我的实时服务器上一切正常,但不在本地。 WampServer 中启用了 curl 扩展,但我没有收到任何错误消息,它只是一个空白页面。
这是我的代码,即使它实际上并不相关。
<?php
$private_key = "XXX";
function summoner_name($summoner, $server, $private_key) {
$summoner_encoded = rawurlencode($summoner);
$summoner_lower = strtolower($summoner_encoded);
$curl_url = 'https://' . $server . '.api.pvp.net/api/lol/' . $server . '/v1.4/summoner/by-name/' . $summoner . '?api_key='.$private_key;
$curl = curl_init($curl_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
function summoner_info_array_name($summoner) {
$summoner_lower = mb_strtolower($summoner, 'UTF-8');
$summoner_nospaces = str_replace(' ', '', $summoner_lower);
return $summoner_nospaces;
}
$summoner = "Test";
$server = "euw";
$summoner_info = summoner_name($summoner, $server, $private_key);
$summoner_info_array = json_decode($summoner_info, true);
$summoner_info_array_name = summoner_info_array_name($summoner);
$summoner_id = $summoner_info_array[$summoner_info_array_name]['id'];
$summoner_name_display = $summoner_info_array[$summoner_info_array_name]['name'];
$summoner_icon = $summoner_info_array[$summoner_info_array_name]['profileIconId'];
echo '<img src="http://ddragon.leagueoflegends.com/cdn/6.9.1/img/profileicon/'.$summoner_icon.'.png" /><br/><hr>'.$summoner_name_display;
?>
这是我的 phpinfo()
卷曲扩展。
提前致谢!
您可以随时调用 curl_getinfo() and curl_error() 函数来检查最新 curl 查询的问题。
像这样:
$result = curl_exec($curl);
if ($result === false) {
echo "Something is wrong here!\n".var_export(curl_error($curl), true)
. "\nQuery:".var_export(curl_getinfo($curl), true); exit();
}
所以,首先,@MaksimVolkob pointed out, and as we discussed in the comments, the first step to resolving these errors is to see what the error message actually is. curl_error()
会给你这个信息。
具体来说,您收到 SSL/TLS 错误:
SSL certificate problem: unable to get local issuer certificate' (length=63)
如果您不关心安全性(我永远不建议将此用于生产应用程序。),您可以禁用失败的 SSL 验证步骤:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
更好的方法是通过设置 CURLOPT_CAINFO
来修复您的 CA 证书信息。 This blog post 很好地解释了这一点。
编辑:正如 OP 发现的那样,