我为我开发的Wordpress网站设置了一个插件,它使用CURL来获取各种社交网络的份额。
除了LinkedIn之外,它们似乎都运行良好 - 我使用以下代码来计算:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_URL => 'http://www.linkedin.com/countserv/count/share?url=' . $url . '&format=json'
));
$response = curl_exec($curl);
$results = json_decode($response);
curl_close($curl);
return $results->count;
奇怪的是,这在我的登台服务器上完美运行,但在现场,我什么都没收到。我把它作为服务器相关的东西,但是相同的代码适用于Facebook。
在我的登台服务器上,我必须将CURLOPT_FOLLOWLOCATION => true
行添加到我的代码才能使其正常工作,但不幸的是它没有在实时服务器上修复它。
有什么想法吗?
答案 0 :(得分:0)
首先确保通过urlencode
运行网址。它会处理?
和#
等特殊字符的问题。
您应该在curl_exec
调用后添加类似于以下内容的错误处理代码,以便进行调试并在卷曲错误时提供回退。
if(curl_errno($curl))
{
// do something sensible here
echo 'error:' . curl_error($c);
}
答案 1 :(得分:0)
假设您在暂存和生产中为$url
提供了相同的值:除了调试/错误处理和url编码之外,您的代码似乎很好。您应该检查实时网络上的传出代理或旧/ PHP / libcurl版本。
答案 2 :(得分:0)
我相信已经改进了LinkedIn SSL证书。
您需要将CURLOPT_SSL_VERIFYPEER
设置为false
,因此在您的例子中会是:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_URL => 'http://www.linkedin.com/countserv/count/share?url=' . $url . '&format=json'
));
$response = curl_exec($curl);
$results = json_decode($response);
curl_close($curl);
return $results->count;
通常你会按如下方式设置:
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);